0

次のコードを考えてみましょう

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); ここに画像の説明を入力

4

1 に答える 1

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 までです

于 2014-01-04T10:24:06.550 に答える