C++ 将双精度*转换为双精度(*)时出错

C++ 将双精度*转换为双精度(*)时出错,c++,fftw,C++,Fftw,以下代码应使用fftw3库返回正弦信号的fft: # include <stdlib.h> # include <stdio.h> # include <time.h> # include <fftw3.h> # include <iostream> # include <cmath> using namespace std; int main (void) { int i; const int N=256;

以下代码应使用fftw3库返回正弦信号的fft:

# include <stdlib.h>
# include <stdio.h>
# include <time.h>
# include <fftw3.h>
# include <iostream>
# include <cmath>

using namespace std;

int main (void)
{
   int i;
   const int N=256;
   double Fs=1000;//sampling frequency
   double T=1/Fs;//sample time 
   double f=500;//frequency
   double *in;
   fftw_complex *out;

   double t[N-1];//time vector 
   fftw_plan plan_forward;

   in = (double*) fftw_malloc( sizeof( double ) * N );
   out = (fftw_complex*) fftw_malloc( sizeof( fftw_complex ) * N );

   for (int i=0; i<N; i++)
   {
     t[i] = i*T;
     in[i] = 0.7 *sin(2*M_PI*f*t[i]);// generate sine waveform
   }

   plan_forward = fftw_plan_dft_1d ( N, in, out, FFTW_FORWARD, FFTW_ESTIMATE );

   fftw_execute ( plan_forward );

   printf ( "\n" );
   printf ( "  Output FFT Coefficients:\n" );
   printf ( "\n" );

   for ( i = 0; i < N; i++ )
   {
     printf ( "  %3d  %12f  %12f\n", i, out[i][0], out[i][1] );
   }
   fftw_destroy_plan ( plan_forward );
   fftw_free ( in );
   fftw_free ( out );
   return 0;
 }
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
内部主(空)
{
int i;
常数int N=256;
双Fs=1000;//采样频率
双T=1/Fs;//采样时间
双f=500;//频率
双*英寸;
fftw_复合体*out;
双t[N-1];//时间向量
fftw_计划向前;
in=(双*)fftw_umalloc(sizeof(双)*N);
out=(fftw_复合体*)fftw_malloc(sizeof(fftw_复合体)*N);

对于(int i=0;iin
变量中的
也需要是
fftw\u complex*
,而不是
double*
。fftw的复杂数据类型恰好是
double[2]
,因此错误消息:编译器需要指向
double[2]的指针
,但是您正在传递一个指向
double

的指针,我所要做的就是将函数
fftw\u plan\u dft\u 1d
更改为
fftw\u plan\u dft\u r2c\u 1d

行,以及您试图调用的函数的完整签名?无法将“double*”转换为“double()[2]'对于参数'2'到'fftw_plan_fftw_plan_dft_1d(int,double()[2],double()[2],int,unsigned int)'plan_forward=fftw_plan_dft_1d(N,in,out,fftw_forward,fftw_估计值);对于此函数,显示了正确的声明。我更改了它,但现在得到的错误是:错误:在[I]=0.7sin(2*M_PIf*t[I]中,将'double'赋值为'fftw_complex{aka double[2]}'时,类型不兼容;//生成正弦波我正在尝试将FFT应用于真实的1D数据。那么为什么in变量也需要是fftw_复数*?请继续读取。该函数用于真实数据。@Sven,我现在不再劫持您的答案:-)