请问matlab求频谱幅值的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 14:10:40
以下是我用matlab求频谱的程序,请问,x=sin(2*pi*10*t)+sin(2*pi*40*t) 这两个正弦波的频率不同,幅值相同,为什么得到的频谱幅值是不同的呢?如果我要用FFT观察不同频率信号的幅值,假设信号x=sin(2*pi*10*t)+1.1*sin(2*pi*40*t),我觉得应该是幅值大的信号频谱也大,为什么matlab仿真的结果不对?我不知到是哪里出了问题 ,怎么做才能使幅值大的信号频谱也大呢,请高手们指点!

N=128;
T=1;
t=linspace(0,T,N);
x=sin(2*pi*10*t)+sin(2*pi*40*t);
dt=t(2)-t(1);
f=1/dt;
X=fft(x);
F=X(1:N);
f=f*(0:N-1)/N;
plot(f,abs(F),'-*');

x信号有两个频率信号x1和x2组成,10hz和40hz。
采样是1s采128个点,即128hz。
相对x1信号,一个周期采12.8个点;
相对x2信号,一个周期只有3.2个点,问题就在这,采样精度不够,当然x2的频域分析精度也不够。
所以你可以把采样点提高到1024,情况就会有所改善。
注意一般要求一个正弦周期采10个点以上。