IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
请教关于fft运算结果,和matlab计算的对不上
新闻出处:21ic 发布时间:2007-10-31
lvgaopan 发布于 2007-10-31 20:55:00
请教各位前辈,我在用2407a做fft运算实验,使用ti的库函数。但程序计算出来的结果和matlab计算出来的结果不一样(峰值频率对得上,但幅值不对)。
源程序如下:
#include "math.h"

#include "fft.h"

#define N 128 /* FFT Length */

#pragma DATA_SECTION(ipcb, "FFTipcb");
#pragma DATA_SECTION(mag, "FFTmag");
#pragma DATA_SECTION(win, "FFTwin");

FFT128C fft=FFT128C_DEFAULTS;

int ipcb[2*N]; /* In place computation buffer */
int mag[N]; /* Magnitude buffer */
int win[N/2]=HAMMING128; /* Window coefficient array */

int src[N];

#define PI (3.141592654)

main()
{
    int i;
    int peak,freq;

    disable();
    lf2407a_init();


    /* FFT initialization */
    fft.ipcbptr=ipcb; /* FFT computation buffer */
    fft.magptr=mag; /* Store mag. square in separate buff */
    fft.winptr=win; /* Window coefficient array */
    fft.init(); /* Copy Twiddle factor */
    /* Acquire samples in bit reversed order or
    Bit-reverse the in-order data using bit-rev utility */

    for(i=0;i<N;i++)
    {
        src[i] = 32768 * cos(2*PI*i/N);
    }
    FFTC_brev1(src, ipcb, N);


    /* FFT Computation */
    fft.win(&fft); /* Window the input data */
    fft.izero(&fft); /* Zero the imaginary part */
    fft.calc(&fft); /* Compute the FFT */
    fft.mag(&fft); /* Obtain the magnitude square */

    peak=fft.peakmag;
    freq=fft.peakfrq;

    while(1);
}

结果分析请看下楼

* - 本贴最后修改时间:2007-10-31 21:00:42 修改者:lvgaopan


lvgaopan 发布于 2007-10-31 20:59:00
matlab上的操作:
i=0:127
src=cos((2*3.14159*i)/128)
fft(src)

第一项:-0.0001
第二项:64.0000 - 0.0002i   
第三项:0.0000 - 0.0000i   
第四项:0.0000 - 0.0000i   
第五项:0.0000 - 0.0000i   
第六项:0.0000 - 0.0000i



lvgaopan 发布于 2007-10-31 21:05:00
这个计算结果,我的理解是
第一项:-0.231201 + i0
第二项:0.266693 - i(3.05176e-05)
第三项:-0.11557 - i0.00283813
第四项:-0.00137329 + i0
第五项:(-9.15527e-05) + i0
第六项:-0.00195313 + i0

这个结果与matlab计算出来的结果明显不符。请问是我的理解有问题(该如何理解结果数据)?还是程序计算有问题(错在什么地方)?

谢谢

* - 本贴最后修改时间:2007-10-31 21:15:50 修改者:lvgaopan


lvgaopan 发布于 2007-10-31 21:18:00
什么是“归一化处理”?
好像在文档里看到有类似的描述,但不太理解。
如果这些数据是对的,那应该如何与matlab计算的数据对应起来?
谢谢


lvgaopan 发布于 2007-10-31 21:33:00
比如有四个数,分别为

原数       归一化处理后
1     >>   0.25
2     >>   0.5
3     >>   0.75
4     >>   1


关闭】 【打印
 
相关专题
友情链接:
© 2007 电测仪器网 网站地图