【信号与系统】信号频谱和测量之汉明窗
- 信号频谱和测量
- 傅里叶变换
- 汉明窗
- 汉明窗函数
- 频谱计算
- 示例
- 输入示例
- 代码
- 运行结果
- 示例2-书中示例
- 参考资料
信号频谱和测量
傅里叶变换
汉明窗
实际情况中,由于无穷的积分范围问题,需要减少测量信号的时间,导致产生了并不存在的频率成分。
一定程度解决该问题的一种方法,取一定数量样本(M个),乘以一个平滑函数:
其中n为样本序号
汉明窗函数
x=0:0.01:1;y=0.54-0.46*cos(2*pi*x);plot(x,y);grid on;
频谱计算
function [Xm,faxis, xtw] = CalcFourierSpectrum(xt,tmax,fmax,UseWindow)dt=tmax/(length(xt)-1);
t=0:dt:tmax;xtw=xt;
if(UseWindow)w=0.54-0.46*cos(2*pi*t/tmax);xtw=xt.*w;
endOmegaMax=2*pi*fmax;
dOmega = OmegaMax* .001;%fvec=[];
%Xmvals=[];p=1;
for Omega=0:dOmega:OmegaMaxcoswave=cos(Omega*t);sinwave=-sin(Omega*t);Xreal=sum(xtw.*coswave*dt);Ximag=sum(xtw.*sinwave*dt);mag=sqrt(Xreal*Xreal+Ximag*Ximag);fHz=Omega/(2*pi);mag=2*mag/tmax;faxis(p)=fHz;Xm(p)=mag;p=p+1;
end
end
示例
输入示例
f=1,w=2*pi*f=2*pi,T=2*pi/w=1,
x(t)=sin(2*pi*f*t)=sin(2*pi*t), f=1
代码
f=1;
t=0:0.001:4;
xt=sin(2*pi*f*t) ;
[Xm,faxis,xtw]=CalcFourierSpectrum(xt,4,10,0);subplot(2,2,1)
plot(t,xt);
grid on;subplot(2,2,2)
plot(faxis,Xm);
grid on; [Xm,faxis,xtw]=CalcFourierSpectrum(xt,4,10,1);
subplot(2,2,3)
plot(t,xtw);
grid on; subplot(2,2,4)
plot(faxis,Xm);
grid on;
运行结果
备注:频谱中,横坐标为f,正比于角频率(w=2piw)
见CalcFourierSpectrum中:fHz=Omega/(2*pi);
示例2-书中示例
x(t)=sin(2pi7/2t)=sin(7pi*t), f=3.5
参考资料
1.通信系统-使用MATLAB分析与实现,【澳】John W.Leis著,徐争光等译,清华大学出版社,2021年4月第1版