标签: fftw

如何将FFTW3集成到iPhone应用程序中?

我正在尝试将FFTW3(用C编写的GNU FFT库,http: //www.fftw.org/ )集成到iPhone应用程序中.我下载了源代码,发现有数百个.h和.c文件以及许多其他我无法识别的文件.我不是linux专家,所以我真的不明白.configure文件和其他类似文件是如何工作的.由于没有像filename.xcodeproj这样的文件,我需要自己设置XCode项目.

我想知道的是: 如何在XCode中获取文件并编译它们而不会出错?有经验或提示吗?

iphone xcode signal-processing fft fftw

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

如何将第三方库(如fftw3和sndfile)链接到Xcode中的iPhone项目?

我正在尝试将第三方库(如fftw3和sndfile)链接到Xcode3.2中的我的iPhone项目.我通过在项目构建配置下将"Header Search Path"设置为"/ usr/local/include"并将"Other Linker Flags"设置为"-lfftw3 -lsndfile",使其在常规Mac项目中工作.但是,当我尝试使用相同的设置在iPhone项目中构建它时,它给出了"找不到-lfftw3库"和退出代码1错误消息.

苹果在iPhone上不允许这样吗?有办法解决这个问题吗?

iphone xcode fftw

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

使用FFT(FFTW)计算两个函数的卷积

我正在尝试使用FFT加速神经模拟器的计算.

等式是:

(1)\ sum(j = 1到N)(w(i-j)*s_NMDA [j])

其中s_NMDA是长度为N的向量,w由以下定义:

(2)W(j)的双曲正切= [1 /(2*西格玛*P)]*EXP(-abs(J)/(西格玛*P)]

sigma和p是常量.

(有没有更好的方法在stackoverflow上呈现方程?)

必须对N个神经元进行计算.由于(1)仅取决于绝对距离abs(i-j),因此应该可以使用FFT(卷积定理)来计算它.

我试图使用FFTW实现这一点,但结果与预期结果不符.我之前从未使用过FFTW,现在我不确定如果我对卷积定理的假设是假的,那么我的实现是不正确的.

void f_I_NMDA_FFT(
    const double     **states, // states[i][6] == s_NMDA[i]
    const unsigned int numNeurons)
{
    fftw_complex *distances, *sNMDAs, *convolution;
    fftw_complex *distances_f, *sNMDAs_f, *convolution_f;
    fftw_plan     p, pinv;
    const double scale = 1./numNeurons;

        distances = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * numNeurons);
        sNMDAs    = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * numNeurons);
        convolution = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * numNeurons);
        distances_f = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * numNeurons);
        sNMDAs_f    = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * numNeurons);
        convolution_f    = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * …
Run Code Online (Sandbox Code Playgroud)

c++ math fft fftw biological-neural-network

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

fftw和在线DFT计算器得到不同的结果

我使用fftw/C++和在线计算器计算了数组{1,2,3,4,5,6}的FFT(http://calculator-fx.com/calculator/fast-fourier-transform-calculator-fft/ 1d离散傅立叶变换).结果似乎有点不同.

fftw输出:

0     21.000000      0.000000
1     -3.000000      5.196152
2     -3.000000      1.732051
3     -3.000000      0.000000
4      0.000000      0.000000
5      0.000000      0.000000
Run Code Online (Sandbox Code Playgroud)

在线计算器输出:

 21 + 0j
 -3 + 5.196152j
 -3 + 1.732051j
 -3 + 0j
 -3 - 1.732051j
 -3 - 5.196152j
Run Code Online (Sandbox Code Playgroud)

如上所示,fftw的后两个结果变为零.无法弄清楚为什么.有人可以帮帮我吗?谢谢.

[编辑] cpp代码:

int main()
{
    fftw_complex *out;
    fftw_plan plan;

    double arr[]={1,2,3,4,5,6};
    int n = sizeof(arr)/sizeof(double);

    out = (fftw_complex*)fftw_malloc ( sizeof ( fftw_complex ) * n );
    plan = fftw_plan_dft_r2c_1d ( n, arr, out, FFTW_ESTIMATE );
    fftw_execute ( …
Run Code Online (Sandbox Code Playgroud)

c++ fft fftw dft

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

如何用FFTW进行频谱分析?

我想更好地了解FFTW的API.FFTW是用于在一个或多个维度上计算离散傅里叶变换(DFT)的库.

现在,假设我有一个正弦波形x = 30*sin(2*M_PI*f*i*T),其中f是频率(例如f = 1000Hz).如果我使用FFTW的功能来分析我的波形,我希望得到一个频率f = 1000Hz.

我的问题是如何使用FFTW库在c ++中执行此操作?任何帮助,将不胜感激.

c c++ spectrum fftw

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

我如何用Visual Studio编译FFTW库?

我正在尝试使用Microsoft Visual Studio编译FFTW.我有2010 Express和Community 2013版本.我从http://www.fftw.org/install/windows.html下载文件.我打开解决方案,选择项目libfftw-3.3并且出现错误"无法找到Windows7.1SDK(Platform Toolset ='Windows7.1SDK')的构建工具"在属性中我将Platform Toolset更改为Visual Studio 2013.当我尝试构建时,它找不到fftw_mkprinter_cnt和fftw_mkprinter_str.当我将Platform Toolset更改为Visual Studio 2010时出错"无法打开文件VCOMPD.lib".当我尝试忽略这个库时,像以前一样出现错误(fftw_mkprinter_cnt和fftw_mkprinter_str)如何编译这个库

visual-studio fftw

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

FFTW 与 Fourn 子程序结果不匹配

我正在将旧的 Fortran 代码库转换/重写为现代代码库。代码库的其中一段使用 Fourn 子程序(来自 Numerical receipies book)用于 FFT 目的。但是当我试图用 FFTW 库做那件事时,它不会产生相同的结果。我在这里很困惑。您可以在此处找到输入数据的代码: https //github.com/Koushikphy/fft_test/tree/master/notworking

使用的代码fourn


program test
    implicit none
    integer, parameter :: n=65536
    complex(kind=8) ::inp(n) = 0.0d0
    real(kind=8) :: sn, urt(2*n)
    integer :: i, ii

    sn = 1.0d0/sqrt(real(n,kind=8))

    do i=1,9070
        read(75,'(i4, 2f20.16)') ii, inp(i)
    enddo


    do i=1,n
        urt(2*i-1)= real(inp(i))
        urt(2*i) = aimag(inp(i))
    enddo

    ! forward
    call fourn(urt,[n],1,1)

    do i=1,n
        write(201,'(i4, 2f20.16)')i, urt(2*i-1), urt(2*i)
    enddo

end program test




SUBROUTINE FOURN(DATA,NN,NDIM,ISIGN)
    INTEGER ISIGN,NDIM,NN(NDIM)
! C      REAL DATA(*)
    DOUBLE PRECISION DATA(*) …
Run Code Online (Sandbox Code Playgroud)

fortran fft numerical-methods fftw fortran90

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

傅立叶系列的快速方法?

我使用FFTW生成系数,现在我想重建原始数据,但只使用第一个numCoefs系数而不是全部系数.目前我正在使用下面的代码,这是非常慢的:

for ( unsigned int i = 0; i < length; ++i )
{
    double sum = 0;
    for ( unsigned int j = 0; j < numCoefs; ++j )
    {
        sum += ( coefs[j][0] * cos( j * omega * i ) ) + ( coefs[j][1] * sin( j * omega * i ) );
    }
    data[i] = sum;
}
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

optimization signal-processing fft fftw

0
推荐指数
1
解决办法
249
查看次数

真实数组的一维批处理 FFT

我听说/读过,如果我们有一些n FFT 来执行一些m 个向量,我们可以使用 cuFFT 的批处理模式。所以为了测试它,我制作了一个示例程序并运行它。我使用的数据是一个文件,其中包含一些1024浮点数,因为相同的1024数字重复了10多次。虽然1024点 FFT应该得到相同的结果,但我没有得到。如果我在某处概念上有错误,请纠正我,下面是代码,如果你能纠正我犯的一些错误。

注意:我只使用 1D FFT。

这是代码片段:

#include <cuda.h>
#include <cufft.h>
#include <stdio.h>
#include <math.h>

#define NX 1024
#define DATASIZE 1024
#define BATCH 10

int main (int argc, char* argv[])
{
        cufftHandle plan;
        cufftComplex *deviceOutputData, *hostOutputData;
        cufftReal *hostInputData, *deviceInputData;
        int i,j;

        FILE *in; // *out, *fp;

        cudaMalloc ((void**)&deviceInputData, NX*BATCH*sizeof(cufftReal));
        hostInputData = (cufftReal*) malloc (NX*BATCH*sizeof(cufftReal));

        cudaMalloc ((void**)&deviceOutputData, NX*BATCH*sizeof(cufftComplex));
        hostOutputData = (cufftComplex*) malloc (NX*BATCH*sizeof(cufftComplex));

        in = fopen …
Run Code Online (Sandbox Code Playgroud)

cuda fft fftw cufft

0
推荐指数
1
解决办法
2614
查看次数

Numpy fft.pack vs FFTW vs您自己实施DFT

我目前需要在1024个采样点信号上运行FFT.到目前为止,我已经在python中实现了我自己的DFT算法,但它非常慢.如果我使用NUMPY fftpack,甚至转移到C++并使用FFTW,你们认为它会更好吗?

python numpy fft fftw

0
推荐指数
1
解决办法
3072
查看次数

配置错误安装fftw

我只是按照这里的说明更新我的gcc。现在,我正在尝试安装FFTW。所以我在这里下载了文件。解压缩并导航到该目录后,运行以下命令:

./configure  --enable-mpi --enable-threads --enable-openmp
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

checking for OpenMP flag of C compiler... unknown
configure: error: don't know how to enable OpenMP
Run Code Online (Sandbox Code Playgroud)

我知道OpenMP在更新GCC之前不起作用,但是如果我这样做,现在它可以工作:

export PATH=/usr/local/gcc-6.1.0/bin:$PATH
gcc-6.1.0 main.c -o main
Run Code Online (Sandbox Code Playgroud)

所以我猜测问题是,当我尝试配置FFTW时,它使用的是默认gcc,但我需要使用gcc-6.1.0。我怎样才能做到这一点?

gcc openmp fftw

0
推荐指数
1
解决办法
713
查看次数

将int而不是double传递给planner

是否可以使用int向量而不是使用double向量进行fft计算?

c fftw

0
推荐指数
1
解决办法
71
查看次数