试验为 256点FFT 用的数组为STM32版面里么“小试256点fft,望圈圈、lut1lut、香版主指教” https://bbs.21ic.com/club/bbs/list.asp?boardid=49&t=3286380&tp=%u8FD9%u4E2A%u4FFA%u5C31%u4E0D%u6E05%u695A%u4E86%u54E6%u2026%u2026%u6CA1%u7528%u8FC7%u8FD9%u4E2A%u5E93%u7684FFT%u2026%u2026%u6211%u7528%u7684%u662F%u81EA%u5DF1%u7684FFT
用STM32的汇编代码,得到结果确实符合00**里说的 0点、50点、75点 2 : 3 :1.5
但用00的代码,结果第50点和第75点都是Not a Number 还麻烦00帮忙看下哪里有问题呢,主要部分代码: IN_TYPE InBuffer0[LENGTH] = { 4708, 2910 , 1756 , 36 , -294 , 4118 ,6191 ,918 , -2275, 1807 , 4805 , 3353 , 1998 ,527 , -656 , 2851 , 6434 , 2487 , -2270, 534 ,4594 ,3844 , 2228 , 998 , -689 , 1616 , 6150 ,3999 , -1732 , -675 , 4038 , 4313 , 2498 , 1397 ,-454 ,563 , 5403 , 5255 , -712 , -1645, 3154 ,4668 , 2844 , 1711 , -43 , -200 , 4320 , 6098 , 665 ,-2225, 2014 , 4808 , 3275 , 1960 , 445 ,-620 , 3065 , 6431 , 2224 , -2308, 747 , 4653 ,3761 ,2188 , 924 , -704 , 1813 , 6232 , 3760 ,-1857, -485 , 4155 , 4240 , 2448 , 1337 , -508 , 720 ,5555 , 5071 , -911 , -1507, 3321 , 4621 , 2780, 1664 , -119 , -96 , 4517 , 5992 , 418 ,-2160,2217 , 4804 , 3198 ,1921 , 362 , -574 ,3278 , 6413 ,1960 , -2331, 960 , 4702 , 3679 ,2149 ,847 , -712 , 2014 ,6301 , 3514 , -1968,-290 , 4262 ,4165 , 2401 , 1274 , -557 , 886 ,5696 ,4876 ,-1099 , -1359, 3482 , 4568 , 2719 , 1615, -193 ,18 , 4708 , 5871 , 176 ,-2083 ,2415 ,4791 , 3123 , 1881 , 279 , -519 , 3491 , 6380, 1697 , -2339, 1174 , 4741 , 3596 , 2111 ,769 ,-711 , 2219 , 6356 , 3263 , -2066, -90 , 4360, 4087 , 2355 , 1208 , -600 , 1058 , 5827 ,4670 ,-1276, -1200, 3634 , 4511 , 2660 , 1564 , -264, 141 ,4894 , 5736 , -58 , -1992, 2609 ,4770 ,3050 ,1841 , 197 , -454 , 3703 , 6332 , 1434, -2332 ,1387 , 4771 , 3514 , 2073 , 690 , -702,2428 ,6396 , 3008 , -2148, 115 , 4448 , 4007, 2311 ,1140 , -636 , 1238 , 5947 , 4455 ,-1441,-1033,3778 , 4449 , 2604 , 1511 , -332 , 273, 5072 ,5589 , -285 , -1888, 2797 , 4743 , 2979,1799 ,116 , -379 , 3912 , 6269 , 1174 , -2311, 1598 ,4793 , 3433 , 2035 , 609 , -683 , 2639,6423 ,2749 , -2216 , 323 , 4526 , 3926 , 2269, 1070 ,-666 , 1424 , 6055 , 4231 , -1593, -858,3912 ,4383 , 2550, 1455, -395 , 413 , 5242 , 5428 ,-503 , -1773 , 2978}; float y[LENGTH/2] = {0};
int main(void) { u16 i = 0;
InitBitRev(); //初始化FFT用的位反转用的表格 while (1) { FftInput(InBuffer0); //位倒序 FftExe(InBuffer0,Re,Im); //做FFT运算
y[0]=sqrt(Re[0]*Re[0]+Im[0]*Im[0])/LENGTH; //计算模值 for(i=1;i<LENGTH/2;i++) { y=2*sqrt(Re*Re+Im*Im)/LENGTH; //计算模值 } } } |