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;
}
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
我用matlab fft 做出來實部部分不一樣
496.000000000000 + 0.00000000000000i
-16.0000000000000 + 162.450726201742i
-16.0000000000000 + 80.4374318740136i
-16.0000000000000 + 52.7449313430131i
-16.0000000000000 + 38.6274169979695i
-16.0000000000000 + 29.9338945886302i
-16.0000000000000 + 23.9456922026478i
-16.0000000000000 + 19.4960564094076i
-16.0000000000000 + 16.0000000000000i
-16.0000000000000 + 13.1308606532586i
-16.0000000000000 + 10.6908582067088i
-16.0000000000000 + 8.55217817521267i
-16.0000000000000 + 6.62741699796952i
-16.0000000000000 + 4.85354693771748i
-16.0000000000000 + 3.18259787807453i
-16.0000000000000 + 1.57586245371465i
-16.0000000000000 + 0.00000000000000i
-16.0000000000000 - 1.57586245371465i
-16.0000000000000 - 3.18259787807453i
-16.0000000000000 - 4.85354693771748i
-16.0000000000000 - 6.62741699796952i
-16.0000000000000 - 8.55217817521267i
-16.0000000000000 - 10.6908582067088i
-16.0000000000000 - 13.1308606532586i
-16.0000000000000 - 16.0000000000000i
-16.0000000000000 - 19.4960564094076i
-16.0000000000000 - 23.9456922026478i
-16.0000000000000 - 29.9338945886302i
-16.0000000000000 - 38.6274169979695i
-16.0000000000000 - 52.7449313430131i
-16.0000000000000 - 80.4374318740136i
-16.0000000000000 - 162.450726201742i
matlab 都是 -16 為什麼opencv 跟matlab fft 不一樣?