2

以下に記述されたコードのプロットでは、75 から 200 uV の値の間の振幅が表示されるはずですが、プロットに何か奇妙な点があります。コードの何が問題なのか、どうすればそれを修正できますか?

皆さん、ありがとうございました

コードは次のとおりです。

clear all;
close all;
Fs = 200
t= 0:1/Fs:180
y_in=zeros (1, length(t));
  for  i = 1:18
F = randi ([4 7], 1);% frequency
A = randi ([75 200],1);% amplitude A=75~200 uV.
y_tmp =A*sin (2*pi*F*t);
 y_in=y_in+ y_tmp;
  end;
L=length (y_in);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y_new = fft(y_in,NFFT)/L;
f_new = Fs/2*linspace(0,1,NFFT/2+1);

figure(1)
plot(f_new,2*abs(Y_new(1:NFFT/2+1))) ;
title('Single-Sided Amplitude Spectrum of y_in(t)')
xlabel('Frequency (Hz)')
ylabel('|y_in(f)|')
4

1 に答える 1

1

18回ループして使用しているので

F = randi([4 7],1);

最終的な信号を構築する周波数の一部は複数回発生するため、それらの振幅は互いに加算されます。

したがって、プロットの fft の後に表示されるのは、周波数の振幅の合計です。

F = 4, 5, 6, 7 Hz
于 2012-06-11T21:08:12.273 に答える