正弦模型的谱结构

时间:2014-01-04 08:51:24

标签: matlab math fft spectral-density

让我们考虑以下代码

function [ x ] = generate1(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;
%[pks,locs] = findpeaks(x);
 %plot(x);
end

因为我知道傅里叶域中的峰值代表了这个频率,它存在于信号中,例如让我们采用这个信号的傅里叶变换图 让我们运行这个信号

y=generate1(3,500,1);

和情节

plot(abs(fft(y)))

enter image description here

但很明显它没有显示我在信号中给出的频率峰值,有什么问题?请帮助我,一般它是静止信号,为什么这个图表应该显示我的确切图片,但它没有做,为什么?

已编辑:

Y1 = generate1(3,500,0); enter image description here

1 个答案:

答案 0 :(得分:1)

function [ x, fs ] = generate1(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;
%[pks,locs] = findpeaks(x);
 %plot(x);
 fs = 1/(t(2)-t(1));
end

并查看

absfft = abs(fft(y));
plot(fs/2*linspace(0,1,length(absfft)/2+1),2*absfft(1:end/2+1))

plot(linspace(-fs/2,fs/2,length(absfft)),fftshift(absfft))

图中的x轴从0到fs / 2,然后从-fs / 2到0