微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 求教fft的问题,附代码

求教fft的问题,附代码

时间:10-02 整理:3721RD 点击:
测试fft变化, 请教各位大侠,如何看fft变化的结果是否正确!!

for(i=0;i<N;i++)
{
test = sin((2*3.14159*i)/128);
ipcb = (long)(test*2147483648);
}

//对电压进行FFT
fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);

CFFT32_brev1(ipcb,ipcb,N);
fft.izero(&fft);
fft.calc(&fft);
fft.mag(&fft);

自己顶一下,有知道的朋友,指点一下阿

谁知道,帮助偶一下吧

基波的幅值为1,其它次谐波的幅值为0,就能说明结果是正确的嘛??

知道的朋友,帮帮忙,说句话吧

大家都不知道吗??一起讨论一下啊

差不多是这样,你增加3次和5次谐波,然后将结果再开方,再看看

谢谢!
但是我的计算结果
mag[1]=79433686
mag[7]=2083801
mag[9]=10187
mag[15]=1125445
mag[17]=5360918
mag[23]=6747834
。。。。。。
这样应该是不对的吧?

是有问题。
我用的是实数的FFT,RFFT32_brev(ipcb,ipcb,FFT_N),没有问题。

RFFT32输入128个点,输出只算出0-64次谐波?

我的程序:
#define N 128
#pragma DATA_SECTION(ipcb,\"FFTipcb\"

;
#pragma DATA_SECTION(mag,\"FFTmag\"

;

RFFT32 fft = RFFT32_128P_DEFAULTS;

long ipcb[N+2];
long mag[N/2+1];

for(i=0;i<N;i++)
{
test = sin((2*3.14159*i)/128);
ipcb = (long)(test*2147483648);
}

fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);

RFFT32_brev(ipcb,ipcb,N);
fft.calc(&fft);
fft.split(&fft);
fft.mag(&fft);

算出来的结果和之前类似,是不是我赋的方法不对?你是怎么赋值的?
万分感激!!

你的数据输入精度可能有问题,DSP的sin值的精度不太高,你又扩大很多倍。
128点的FFT只能算出64次谐波。

那你试验的时候是怎么赋初值的?
可以发给我看看吗?
谢谢!!

死办法,用EXCEL计算,然后放在data区。如下:

.data
_INDATA:

;y=0.25cos(314*t)+0.25cos(314*3*t)/3+0.25cos(314*9*t)/9 Q14

.WORD 5916,5853,5672,5397,5064,4715,4385,4105
.WORD 3887,3729,3615,3514,3393,3222,2978,2653
.WORD 2256,1811 ,1354 ,924 ,561 ,294 ,138 ,90
.WORD 131 ,230 ,347 ,443 ,487 ,460 ,359 ,198
.WORD 3 ,-192,-355,-458,-487 ,-445 ,-350,-233
.WORD -133,-90,-134,-287,-551,-911,-1339,-1796
.WORD -2242,-2641,-2968,-3215,-3388,-3510,-3611,-3725
.WORD -3881,-4097,-4375,-4703,-5053,-5387,-5664,-5849
.WORD -5916,-5857,-5679,-5407,-5076,-4726,-4395,-4113
.WORD -3893,-3734,-3618,-3517,-3398,-3228,-2987,-2665
.WORD -2270,-1826,-1368,-937,-572,-301,-141,-90
.WORD -129,-226,-343,-440,-486,-462,-363,-204
.WORD -10,186,350,455,487,448,354,237
.WORD 136,90,131,281,541,898,1325,1782
.WORD 2228,2629,2959,3208,3384,3507,3608,3721
.WORD 3875,4089,4365,4692,5042,5377,5656,5845

最后你是以q14的形式输入的吗?ti的手册上ipcb不是应该是q 31吗?

有没有msn,我的jbzliu@hotmail.com

一样的程序,别人在2812的板子上算出来是正确的,我在2806上算出来就不对。
我把程序里其他和fft计算无关的变量删除了,fft计算结果也不一样
大家帮忙分析一下是怎么回事吧??

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top