打印
[STM32F4]

关于F4的DSP库FFT运算的疑问,请高手指点。

[复制链接]
1327|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
myst|  楼主 | 2014-9-25 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 myst 于 2014-9-25 17:17 编辑

我直接拿官方的FFT测试实例。
修改了初始值。。。

代码如下;

int32_t main(void)
{
for(index=0;index<2048;index++)
         {  
                  testInput_f32_10khz[index]= 100*sin(3.14*index/512);
        }

  arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse);

  arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);  

  arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);

   for(index=0;index<1024;index++)
         {
           printf("index%d =%d\r\n",index,(u32)testOutput[index]);
         
         }

  while(1);                             /* main function does not return */
}


1. 如果2048个点,我直接取正弦波的值,那么打印出来是

index2 =72203
index1022 =72647
貌似是对称的。。。
for(index=0;index<2048;index++)
         {  
                  testInput_f32_10khz[index]= 100*sin(3.14*index/512);
        }



2.但是如果2048个点,我按照下面方式
        for(index=0;index<2048;index++)
         {  

        if(index%2==0)
                  testInput_f32_10khz[index]= 100*sin(3.14*index/512);
            else
             testInput_f32_10khz[index]= 100*cos(3.14*index/512);
        }
那么测试出来是
index1022 =102399
不对称。。。

3.如果我虚部为0,实部位正弦值:
        for(index=0;index<2048;index++)
         {  

        if(index%2==0)
                  testInput_f32_10khz[index]= 100*sin(3.14*index/512);
            else
             testInput_f32_10khz[index]= 0;
        }

出来是
index2 =51212
index1022 =51212
是对称的。。


请问这怎么理解呢???
如果我ADC采集一个信号,我应该怎样设置这个初始值呢?请教高手





沙发
myst|  楼主 | 2014-9-25 19:47 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝