在下面写的代码的情节中,我应该看到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)|')
答案 0 :(得分:1)
由于您循环18次并使用
F = randi([4 7],1);
构建最终信号的一些频率会多次出现,因此它们的振幅相互叠加。
在你的情节中fft后你所看到的是频率振幅的总和
F = 4, 5, 6, 7 Hz