TI中文支持网
TI专业的中文技术问题搜集分享网站

调用FFT后,频率不对的问题。

本人使用CCS3.3平台TMS320C55xx(Simulator)仿真程序,使用的是DSPlib中的RFFT程序。

用matlab生成10HZ信号,程序使用采样频率128HZ,采样点128个。

相应的在RFFT的例程上进行修改,对输入信号使用GHAPH中的FFT-Mag观测,最大的幅值出现在10HZ位置上,这点没问题。

但是当经过 rfft(x,NX,SCALE)变换后,使用GHAPH对FFT后的结果进行观测,频谱最大的幅值出现在21HZ位置上。

不明白为什么会出现这种问题,请问如何解决?附图如下

Shine:

看到截图里代码编译出错,运行的是修改代码后生成的新的.out文件?

user3636798:

回复 Shine:

那个是我后来随便改的,编译信息和该提问无关。

user3636798:

回复 Shine:

我又重新做了一遍,采样频率未变,更换了采样点数,由上面的128个变为256个。结果频谱最大的幅值出现在41HZ位置上!

具体过程如下:

matlab使用一下生成采样点

fs=128;N=256;   %采样频率和数据点数

n=0:N-1;

t=n/fs;   %时间序列

x=32766*(0+0*sin(2*pi*5*t)+1*sin(2*pi*10*t)+0*sin(2*pi*20*t)); %模拟输入信号

调用RFFT函数结果如图,频谱最大的幅值出现在41HZ(采样点数256),比之前提问时的21HZ(采样点数128)又增大了,现在怀疑与采样点数有关,可是都是完全按照文档进行编写的,rfft(x,NX,SCALE)各参数也没问题,期待官方解答!

user3636798:

回复 Shine:

试了几组新数据,其中f为单频信号的频率,fs为采样频率,n为采样点数,fmax为fft后频谱最大处的频率。

f=10Hz, fs=64Hz, n=64, fmax=21Hz.(是f的2倍)

f=10Hz, fs=64Hz, n=128, fmax=41Hz.(是f的4倍)

f=10Hz, fs=64Hz, n=256, fmax=81Hz.(是f的8倍)

f=10Hz, fs=128Hz, n=64, fmax=11Hz.(有1Hz偏差,可能与我正弦信号取整所影响)

f=10Hz, fs=128Hz, n=128, fmax=21Hz.(是f的2倍)

f=10Hz, fs=128Hz, n=256, fmax=41Hz.(是f的4倍)

f=20Hz, fs=64Hz, n=64, fmax=41Hz.(是f的2倍)

f=20Hz, fs=128Hz, n=64, fmax=21Hz.(有1Hz偏差,可能与我正弦信号取整所影响)

以上我用matlab仿真,数据结果都没有问题。可是使用CCS就是出现了上述问题,即最大频谱的频率点不等于单频信号的频率f,还与采样频率fs、采样点数n有关。现在实在是搞不懂了,期待答复。

user5739360:

回复 user3636798:

您好,请问您怎么解决的,我计算后的幅值完全不对,分布都不对,0频处能量特别大,我保证已经换算成真实频率了。

赞(0)
未经允许不得转载:TI中文支持网 » 调用FFT后,频率不对的问题。
分享到: 更多 (0)