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"); return 0;}
结果:
0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 18.00 19.00 20.00 21.00 22.00 23.00 24.00 25.00 26.00 27.00 28.00 29.00 30.00 31.00 The result of DFT: 496.00 - 16.00 162.45 - 16.00 80.44 - 16.00 52.74 - 16.00 38.63 - 16.00 29.93 - 16.00 23.95 - 16.00 19.50 - 16.00 16.00 - 16.00 13.13 - 16.00 10.69 - 16.00 8.55 - 16.00 6.63 - 16.00 4.85 - 16.00 3.18 - 16.00 1.58 - 16.00 The result of IDFT: 0.00 32.00 64.00 96.00 128.00 160.00 192.00 224.00 256.00 288.00 320.00 352.00 384.00 416.00 448.00 480.00 512.00 544.00 576.00 608.00 640.00 672.00 704.00 736.00 768.00 800.00 832.00 864.00 896.00 928.00 960.00 992.00 Press any key to continue . . .