请教各位前辈,我在用2407a做fft运算实验,使用ti的库函数。但程序计算出来的结果和matlab计算出来的结果不一样(峰值频率对得上,但幅值不对)。<br />源程序如下:<br />#include "math.h"<br /><br />#include "fft.h"<br /><br />#define N 128 /* FFT Length */<br /><br />#pragma DATA_SECTION(ipcb, "FFTipcb");<br />#pragma DATA_SECTION(mag, "FFTmag");<br />#pragma DATA_SECTION(win, "FFTwin");<br /><br />FFT128C fft=FFT128C_DEFAULTS;<br /><br />int ipcb[2*N]; /* In place computation buffer */<br />int mag[N]; /* Magnitude buffer */<br />int win[N/2]=HAMMING128; /* Window coefficient array */<br /><br />int src[N];<br /><br />#define PI (3.141592654)<br /><br />main()<br />{ <br /> int i;<br /> int peak,freq;<br /><br /> disable();<br /> lf2407a_init();<br /><br /><br /> /* FFT initialization */<br /> fft.ipcbptr=ipcb; /* FFT computation buffer */<br /> fft.magptr=mag; /* Store mag. square in separate buff */<br /> fft.winptr=win; /* Window coefficient array */<br /> fft.init(); /* Copy Twiddle factor */<br /> /* Acquire samples in bit reversed order or<br /> Bit-reverse the in-order data using bit-rev utility */<br /><br /> for(i=0;i<N;i++)<br /> {<br /> src = 32768 * cos(2*PI*i/N);<br /> }<br /> FFTC_brev1(src, ipcb, N);<br /><br /><br /> /* FFT Computation */<br /> fft.win(&fft); /* Window the input data */<br /> fft.izero(&fft); /* Zero the imaginary part */<br /> fft.calc(&fft); /* Compute the FFT */<br /> fft.mag(&fft); /* Obtain the magnitude square */<br /><br /> peak=fft.peakmag;<br /> freq=fft.peakfrq;<br /><br /> while(1);<br />}<br /><br />结果分析请看下楼 |
|