让我们考虑以下代码
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)))
但很明显它没有显示我在信号中给出的频率峰值,有什么问题?请帮助我,一般它是静止信号,为什么这个图表应该显示我的确切图片,但它没有做,为什么?
已编辑:
Y1 = generate1(3,500,0);
答案 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