保定网站推广公司,百度网盟推广多少钱,沈阳企业建站系统模板,取消网站备案引言
利用FFT分析/估计时域信号的幅度和相位#xff0c;属于传统估计的范畴。估计的准确程度受频率分辨率的影响较大。如果被估计的目标频率等于频率分辨率的整数倍#xff0c;信号的幅相估计都是最准确的。一旦目标频率不等于频率分辨率的整数倍#xff0c;幅度估计值将会… 引言
利用FFT分析/估计时域信号的幅度和相位属于传统估计的范畴。估计的准确程度受频率分辨率的影响较大。如果被估计的目标频率等于频率分辨率的整数倍信号的幅相估计都是最准确的。一旦目标频率不等于频率分辨率的整数倍幅度估计值将会降低相位估计值会偏差很大。
下面会通过一些仿真来验证。
单点频实信号估计 信号幅值10 信号相位45° 信号频率100Hz 信号类型实信号 采样率1000Hz 采样点数100 频率分辨率10Hz 信号频率等于分辨率整数倍
MATLAB代码
clc;
clearvars;
close all;fs10e2;
f01e2;
p0-pi/8;
N100;
t(0:N-1)/fs;
s10*cos(2*pi*f0*tp0);
figure;
subplot(311)
plot(s)
title(时域波形);xlabel(采样点数);ylabel(采样幅度)subplot(312)
plot((linspace(-fs/2,fs/2-fs/N,N)),abs(fftshift(fft(s)))/N)
title(幅度谱);xlabel(频率/Hz);ylabel(幅度)subplot(313)
plot((linspace(-fs/2,fs/2-fs/N,N)),angle(fftshift(fft(s)))/pi*180)
title(相位谱);xlabel(频率/Hz);ylabel(相位/°) 注意此处分析的双边谱所以每边高度为 10/2 5 相位估计很准确是45°相位。 信号频率不等于分辨率整数倍
如果改变采样点数改为128使得频率分辨率变化不等于分辨率的整数倍则
clc;
clearvars;
close all;fs10e2;
f01e2;
p0pi/4;
N128;
t(0:N-1)/fs;
s10*cos(2*pi*f0*tp0);
figure;
subplot(311)
plot(s)
title(时域波形);xlabel(采样点数);ylabel(采样幅度)subplot(312)
plot((linspace(-fs/2,fs/2-fs/N,N)),abs(fftshift(fft(s)))/N)
title(幅度谱);xlabel(频率/Hz);ylabel(幅度)subplot(313)
plot((linspace(-fs/2,fs/2-fs/N,N)),angle(fftshift(fft(s)))/pi*180)
title(相位谱);xlabel(频率/Hz);ylabel(相位/°) 根据仿真结果发现频率、幅度估值有微小偏差相位的估计值几乎不可信。 信号频率等于分辨率整数倍加噪声
考虑噪声影响
clc;
clearvars;
close all;fs10e2;
f01e2;
p0pi/4;
N100;
t(0:N-1)/fs;
s10*cos(2*pi*f0*tp0) 2*randn(1,N);
figure;
subplot(311)
plot(s)
title(时域波形);xlabel(采样点数);ylabel(采样幅度)subplot(312)
plot((linspace(-fs/2,fs/2-fs/N,N)),abs(fftshift(fft(s)))/N)
title(幅度谱);xlabel(频率/Hz);ylabel(幅度)subplot(313)
plot((linspace(-fs/2,fs/2-fs/N,N)),angle(fftshift(fft(s)))/pi*180)
title(相位谱);xlabel(频率/Hz);ylabel(相位/°) 根据仿真结果信号的频率估计准确但是幅度和相位的估计存在微小误差。 多点频实信号估计
信号的频点均位于频率分辨率整数倍的位置
clc;
clearvars;
close all;fs10e2;
f01e2;
p0pi/4;
f12e2;
p1pi/2;
N100;
t(0:N-1)/fs;
s10*cos(2*pi*f0*tp0) 4*cos(2*pi*f1*tp1);
figure;
subplot(311)
plot(s)
title(时域波形);xlabel(采样点数);ylabel(采样幅度)subplot(312)
plot((linspace(-fs/2,fs/2-fs/N,N)),abs(fftshift(fft(s)))/N)
title(幅度谱);xlabel(频率/Hz);ylabel(幅度)subplot(313)
plot((linspace(-fs/2,fs/2-fs/N,N)),angle(fftshift(fft(s)))/pi*180)
title(相位谱);xlabel(频率/Hz);ylabel(相位/°) 对于多点频信号只要信号频点均位于分辨率整数倍的位置其估值都十分准确。 多点频复信号估计
下面再试验一下复信号
clc;
clearvars;
close all;fs10e2;
f01e2;
p0pi/4;
f12e2;
p1pi/2;
N100;
t(0:N-1)/fs;
s10*exp(1j*(2*pi*f0*tp0)) 4*exp(1j*(2*pi*f1*tp1));
figure;
subplot(411)
plot(real(s))
title(时域波形(实部));xlabel(采样点数);ylabel(采样幅度)subplot(412)
plot(imag(s))
title(时域波形(虚部));xlabel(采样点数);ylabel(采样幅度)subplot(413)
plot((linspace(-fs/2,fs/2-fs/N,N)),abs(fftshift(fft(s)))/N)
title(幅度谱);xlabel(频率/Hz);ylabel(幅度)subplot(414)
plot((linspace(-fs/2,fs/2-fs/N,N)),angle(fftshift(fft(s)))/pi*180)
title(相位谱);xlabel(频率/Hz);ylabel(相位/°) 根据仿真结果可以看出复信号同样满足上述结论即信号频率位于分辨率整数倍位置时用FFT可以精确估计其频率和相位。 结论
结尾处再次说明一下 不论是是信号还是复信号 不加噪声时位于分辨率整数倍处的信号频率、相位均可以被精确估算不加噪声时不位于分辨率整数倍处的信号频率的估计存在微小误差、相位估计值基本不可信加噪声时位于分辨率整数倍处的信号频率可以被精确估算相位估算存在微小偏差可以结合代码和仿真进行理解如有疑问评论区留言吧~~