int main(int argc, char* argv[]) ...{ unsigned int i; CvMat* s = cvCreateMat(1,32,CV_32FC1); CvMat* d = cvCreateMat(1,32,CV_32FC1); CvMat* s2 = cvCreateMat(1,32,CV_32FC1); for(i=0;i<32;i++) cvSetReal2D(s,0,i,i); //显示一下输入信号 for(i=0;i<32;i++) printf("%6.2f ",cvGetReal2D(s,0,i)); printf(""); //DFT 离散傅立叶变换 cvDFT(s,d,CV_DXT_FORWARD); //CV_DXT_FORWARD 代表了正变换:空域-〉频域 printf("The result of DFT: "); for(i=0;i<32;i++) printf("%6.2f ",cvGetReal2D(d,0,i)); //DFT 离散傅立叶逆变换 cvDFT(d,s2,CV_DXT_INVERSE); //逆变换 printf(" The result of IDFT: "); for(i=0;i<32;i++) printf("%6.2f ",cvGetReal2D(s2,0,i)); printf(""); system("pause"); return0; }
结果:
0.001.002.003.004.005.006.007.008.009.00 10.0011.0012.0013.0014.0015.0016.0017.0018.0019.00 20.0021.0022.0023.0024.0025.0026.0027.0028.0029.00 30.0031.00 The result of DFT: 496.00-16.00162.45-16.0080.44-16.0052.74-16.0038.63-16.00 29.93-16.0023.95-16.0019.50-16.0016.00-16.0013.13-16.00 10.69-16.008.55-16.006.63-16.004.85-16.003.18-16.00 1.58-16.00 The result of IDFT: 0.0032.0064.0096.00128.00160.00192.00224.00256.00288.00 320.00352.00384.00416.00448.00480.00512.00544.00576.00608.00 640.00672.00704.00736.00768.00800.00832.00864.00896.00928.00 960.00992.00 Press any key to continue . . .