采用傅里叶变换来计算存在噪声的适于信号频谱。
假设数据采样频率为1000Hz,一个信号包含两个正弦波,频率50Hz、120Hz,振幅0.7、1,噪声为零平均值的随机噪声,采用FFT方法分析其频谱。
Matlab
clear
Fs = 1000; % 采样频率
T = 1/Fs; % 采样时间
L = 1000; % 信号长度
t = (0:L-1)*T; % 时间向量
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % 加噪声正弦信号
figure
plot(Fs*t(1:50),y(1:50)) %绘制添加了随机噪声的信号波
title('零平均值噪声信号');
xlabel('time (milliseconds)')
NFFT = 2^nextpow2(L); %传递fft的信号长度
Y = fft(y,NFFT)/L; %对信号进行快速傅里叶变换,将时域信号转化为频谱
f = Fs/2*linspace(0,1,NFFT/2); %FFT变换后的频率
figure
plot(f,2*abs(Y(1:NFFT/2)))
title('y(t)单边振幅频谱')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')