小编Kit*_*chi的帖子

在Python中调用C函数

我有一堆用C编写的函数,我想要一些用Python编写的代码来访问这些函数.

我在这里已经阅读了几个处理类似问题的问题(例如这里这里),但我对我需要采取哪种方法感到困惑.

一个问题推荐ctypes,另一个推荐cython.我已经阅读了两篇文档,我完全不清楚哪一个对我有用.

基本上我已经写了一些python代码来做一些二维FFT,我希望C代码能够看到那个结果然后通过我编写的各种C函数来处理它.我不知道我是否更容易从C调用Python,反之亦然.

c python ctypes cython

30
推荐指数
3
解决办法
4万
查看次数

没有SSH的Git和Bitbucket

我在我的计算机上设置了一个本地git存储库,我正在尝试将其推送到新创建的Bitbucket帐户.

问题是Bitbucket给了我一个ssh推送的网址,但我所在的网络(大学)有ssh端口阻止外部ssh.所以失败了,如果我尝试ssh://https://它替换它一直告诉我认证失败了.

有没有办法在不使用的情况下推送到bitbucket ssh

git bitbucket

28
推荐指数
1
解决办法
2万
查看次数

线性/非线性拟合到正弦曲线

我看过这个这个.

但我有一个稍微不同的问题.我知道我的数据是一条正弦曲线,具有未知周期和未知幅度,具有加性非高斯分布噪声.

我试图在C中使用GSL非线性算法来拟合它,但是拟合绝对可怕.我想知道我是否(错误地)使用非线性拟合算法,我应该使用线性算法?

如何判断特定数据集是否需要线性算法或非线性算法?

编辑:我的曲线非常嘈杂,因此使用FFT来计算频率可能会导致误报和错误拟合.我正在寻找一种更健壮的贴合方式.

曲线约170点

如您所见,上图大约有170个点,下图大约有790个点.

在此输入图像描述

噪声明显是非高斯的,并且与数据的幅度相比较大.我已经尝试过高斯分布式噪声的FFT,而且我很适合.在这里,它的失败非常严重.

增加:链接到一次系列数据.文件中的每一列都是不同的时间序列.

c algorithm curve-fitting

15
推荐指数
1
解决办法
5486
查看次数

Mayavi中的TVTK错误(Python)

我正在运行Fedora 17(x64)机器,我尝试安装Mayavi for python via

yum install mayavi
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,除了每次我写一个代码,我称之为mayavi模块(如mlab):

from enthought.mayavi import mlab
Run Code Online (Sandbox Code Playgroud)

它因错误而大叫

********************************************************************************
WARNING: Imported VTK version (5.8) does not match the one used
     to build the TVTK classes (5.6). This may cause problems.
     Please rebuild TVTK.
********************************************************************************
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,但我不知道如何重建TVTK以匹配VTK的版本.我怀疑这是导致异常行为,但我不能确定.你如何重建TVTK?

python vtk mayavi

12
推荐指数
1
解决办法
4538
查看次数

拟合未知曲线

我遇到了一些相关的问题(比如这个,这个,这个这个),但它们都处理将数据拟合到已知曲线.有没有办法将给定数据拟合到未知曲线?我的意思是,给定一些数据,算法将给出一个拟合,即一个函数或一个函数的总和.我正在用C语言编程,但我完全不知道如何使用gsl包来完成这项工作.我愿意使用任何可以(理想情况下)通过C管道输送的东西.但是,对于我应该看哪个方向的任何帮助都将非常感激.

编辑:这基本上是我收集的实验(物理)数据,因此数据会有一些趋势由加性高斯分布噪声修改.一般来说趋势是非线性的,所以我猜一个线性回归拟合方法是不合适的.至于排序,数据是按时间排序的,因此曲线必须按此顺序排列.

c algorithm statistics curve-fitting

10
推荐指数
1
解决办法
3257
查看次数

通过calloc分配的多维数组

我有一个关于如何分配内存的问题calloc.我看了一下这个问题,但它没有解决在动态分配二维数组的情况下如何分配内存的问题.

我想知道以下三种动态分配2D数组的方式之间的内存表示是否存在差异.

类型1:

double  **array1;
int ii;

array1 = calloc(10, sizeof(double *));
for(ii = 0; ii < 10; ii++) { 
   array1[ii] = calloc(10, sizeof(double));
}
// Then access array elements like array1[ii][jj]
Run Code Online (Sandbox Code Playgroud)

类型2:

double  **array1;
int ii;

array1 = calloc(10 * 10, sizeof(double *));
// Then access array elements like array1[ii + 10*jj]
Run Code Online (Sandbox Code Playgroud)

类型3:

double  **array1;
int ii;

array1 = malloc(10 * 10, sizeof(double *));
// Then access array elements like array1[ii + 10*jj]
Run Code Online (Sandbox Code Playgroud)

从我所理解的calloc …

c malloc calloc

10
推荐指数
1
解决办法
3万
查看次数

从多维FFT中提取频率

我写了一个python代码来获取2D信号并对其进行FFT,现在我想提取与FFT相关的频率.的np.fft.fftfreq失败,给我的错误

File "/usr/lib64/python2.7/site-packages/numpy/fft/helper.py", line 153, in fftfreq
    assert isinstance(n,types.IntType) or isinstance(n, integer)
AssertionError
Run Code Online (Sandbox Code Playgroud)

我的代码是:

import numpy as np
import scipy as sp
import pylab
import sys
import math

filename = sys.argv[1]  # Get name of file to open 

ifp = open(filename, "r")
ifp.seek(0)

nrows = 0
ncols = 0

nrows = sum(1 for line in ifp) # Sum over all the lines in the file ptr

ifp.seek(0) # Set the fptr back to beginning of file
for line …
Run Code Online (Sandbox Code Playgroud)

python fft scipy

4
推荐指数
1
解决办法
5152
查看次数

Mayavi 中的多个地块

MATLAB 有一个hold函数(如果我没记错的话,已经有一段时间了)可以在同一个“图形”/窗口上绘制多个内容。无论如何,在 Mayavi 中可以做到这一点吗?我想可视化计算的几种实现,并将它们全部放在同一张图表上。但我无法通过阅读文档弄清楚这一点。

python data-visualization mayavi

4
推荐指数
1
解决办法
3756
查看次数

在Mayavi中禁用3D散点图中的点缩放

mayavi为Python模块具有三维散点绘图功能.默认情况下,点的大小与数据一起缩放(据我通过他们的网站可以理解).这就是我的数据的屏幕截图:

Mayavi Point Scatter

色图表示每个点的值,因此我不要求点的大小也与点的值一起缩放.有没有办法禁用缩放大小?

python data-visualization mayavi

3
推荐指数
1
解决办法
1187
查看次数

在函数调用之间保留文件指针

我有一个代码,我几次访问二进制文件.每次调用该函数时,它都会打开文件进行读取,并且只读取所需的字节数(比如n每次的字节数).

二进制文件包含时间序列数据,我希望它能够通过循环运行函数调用,每次调用函数打开同一个文件时,它需要读出下一个块数据,我不希望每次都重置文件指针.有没有办法做到这一点?

该函数看起来像这样:

int readBinary(float *binImage, int gelements) {
    imageFile = fopen("tmpImageFile", "r");
    if (imageFile == NULL) {
       fprintf(stderr, "Error opening file\n");
       return (1);
    }
    fread(binImage, sizeof(float), gelements, imageFile);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的主代码中,我想通过循环运行它,每次都给它一个binImage大小的数组gelements.gelements * nLoop如果这是可以避免的,我宁愿不给它一个大小的数组.

c file-io binaryfiles

3
推荐指数
2
解决办法
2812
查看次数