请问各位朋友,在C++中如何实现复数数组?
请问各位朋友,在C++中如何实现复数数组?我想有标准库中的complex来实现,为什么不行呢?我的是VC2005,程序如下:
#include "stdafx.h "
#include "math.h "
#include <complex>
void DFT(complex <float> a[],complex <float> b[],int N)
{
for (int k = 0;k <N;k++)
{
b[k]=(0,0);
for(int n = 0;n <N;n++)
{
complex <float> mm = (0,(2*3.14/N)*k*n);
b[k]=b[k]+(a[n]*(exp(mm));
}
}
}
int main()
{
complex <float> x[3]={(1,0),(1,0),(1,0)};
complex <float> y[3];
DFT(x,y,3);
for(int k=0;k <3;k++)
{
printf( "y[%d] = %f+i%f\n ",k,y[k]);
}
return 0;
}
[解决办法]
b[k]=b[k]+(a[n]*(exp(mm)));少了一个括弧
[解决办法]
在标准库中,用 vector,就是数组。
[解决办法]
error C2065: “complex”: 未声明的标识符g:\work\visual studio 2005\projects\dosdft2\dosdft2\dosdft2.cpp5
using namespace std;
[解决办法]
printf( "x[%d] = %f,%f ",k,x[k].real, x[k].imag);
这样试试
[解决办法]
#include "math.h "
#include <complex>
#include <iostream>
using namespace std;
void DFT(complex <float> a[],complex <float> b[],int N)
{
for (int k = 0;k <N;k++)
{
b[k]=complex <float> (0,0);
//b[k]=(0,0);
for(int n = 0;n <N;n++)
{
complex <float> mm = complex <float> (0,(2*3.14/N)*k*n);
//complex <float> mm = (0,(2*3.14/N)*k*n);
b[k]=b[k]+(a[n]*(exp(mm)));
}
}
}
int main()
{
complex <float> x[3]={complex <float> (1,0),complex <float> (1,0),complex <float> (1,0)};
complex <float> y[3];
DFT(x,y,3);
for(int k=0;k <3;k++)
{
cout < < "y[ " < <k < < "]= " < <y[k];
//printf( "y[%d] = %f+i%f\n ",k,y[k]);
}
return 0;
}