我是靠谱客的博主 精明犀牛,最近开发中收集的这篇文章主要介绍Matlab2019b关于窗函数的详细设置(dsp.window)使用窗函数来截取一段无限长(非常长:远大于一帧的长度)的信号,形象的来描述就是透过一个窗户来看一个信号,这个窗户的形状会对信号有一定的影响。使用窗函数可以减少截断时的噪声(一刀切边缘会产生很多的高频谐波(吉布斯效应),从而造成频谱泄露(FFT的时候会搞出来很多原本信号没有的频率),所以切下去的时候要温柔一点,搞一点弧线,又不能太影响信号本身,继而出现了下面N种窗函数)常见窗函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用窗函数来截取一段无限长(非常长:远大于一帧的长度)的信号,形象的来描述就是透过一个窗户来看一个信号,这个窗户的形状会对信号有一定的影响。

看大佬的解释看不懂,水平不足,下面是从自身使用的感觉来讲的,如果不对还请指点包容,感激不尽。

使用窗函数可以减少截断时的噪声(一刀切边缘会产生很多的高频谐波(吉布斯效应),从而造成频谱泄露(FFT的时候会搞出来很多原本信号没有的频率),所以切下去的时候要温柔一点,搞一点弧线,又不能太影响信号本身,继而出现了下面N种窗函数)

在这里插入图片描述

网上程序多为使用window函数构建,本人使用dsp.window构建,处理速度更快,程序更为精简。

%% 窗函数
clc;

Fs = 1000;            % Sampling frequency
T = 1/Fs;             % Sampling period
L = 1500;             % Length of signal
t = (0:L-1)*T;        % Time vector
X = 0.7*sin(2*pi*50*t)+ 0.9*cos(2*pi*90*t)+rand(4,1500);%如果要看到窗函数的作用,数据在每个通道内必须有大于两帧的长度

win = dsp.Window
win.WindowFunction='Hamming';
win.WeightsOutputPort=true;
win.StopbandAttenuation=50;%仅当Chebyshev型窗函数时有效,数值越大,带宽越窄
win.Beta=10;%仅当Kaiser型窗函数时有效
win.NumConstantSidelobes=4;%仅当Taylor型窗函数时有效
win.MaximumSidelobeLevel=-30;%仅当Taylor型窗函数时有效
win.Sampling='Symmetric';%仅当Blackman;Hamming;Hann;Hanning型窗函数时有效
%用法
[Y,W] = win(X);
wvtool(W)%可以查看窗函数的工具

subplot(2,1,1)
plot(t,X)
subplot(2,1,2)
plot(t,Y)

常见窗函数

矩形窗

通常如果不加窗函数,就是默认为矩形窗。
ω ( n ) = 1 displaystyle omega (n)=1 ω(n)=1
在这里插入图片描述

高斯窗

ω ( n ) = e − 1 2 ( n − ( N − 1 ) / 2 σ ( N − 1 ) / 2 ) 2 σ ≤ 0.5 displaystyle begin{array}{l}omega (n)={{e}^{{-frac{1}{2}{{{(frac{{n-(N-1)/2}} {{sigma (N-1)/2}})}}^{2}}}}}\sigma le 0.5end{array} ω(n)=e21(σ(N1)/2n(N1)/2)2σ0.5
在这里插入图片描述

汉明窗

ω ( n ) = a 0 − ( 1 − a 0 ) ⋅ cos ⁡ ( 2 π n N − 1 ) , 0 ≤ n ≤ N − 1 , a 0 = 0.53836 H a m m i n g , a 0 = 0.5 H a n n displaystyle begin{array}{l}omega (n)={{a}_{0}}-(1-{{a}_{0}})cdot cos (frac{{2pi n}}{{N-1}}),0le nle N-1,\{{a}_{0}}=0.53836Hamming,{{a}_{0}}=0.5Hannend{array} ω(n)=a0(1a0)cos(N12πn),0nN1,a0=0.53836Hamming,a0=0.5Hann在这里插入图片描述

汉宁窗

在这里插入图片描述

巴特雷特窗

ω ( n ) = 2 N − 1 ⋅ ( N − 1 2 − ∣ n − N − 1 2 ∣ ) displaystyle omega (n)=frac{2}{{N-1}}cdot (frac{{N-1}}{2}-|n-frac{{N-1}}{2}|) ω(n)=N12(2N1n2N1)
在这里插入图片描述

三角窗

ω ( n ) = 2 N ⋅ ( N 2 − ∣ n − N − 1 2 ∣ ) displaystyle omega (n)=frac{2}{N}cdot (frac{N}{2}-|n-frac{{N-1}}{2}|) ω(n)=N2(2Nn2N1)
在这里插入图片描述

布拉克曼窗

ω ( n ) = a 0 − a 1 cos ⁡ ( 2 π n N − 1 ) + a 2 cos ⁡ ( 4 π n N − 1 ) , a 0 = 0.42 , a 1 = 0.5 , a 2 = 0.08 displaystyle omega (n)={{a}_{0}}-{{a}_{1}}cos (frac{{2pi n}}{{N-1}})+{{a}_{2}}cos (frac{{4pi n}}{{N-1}}),{{a}_{0}}=0.42,{{a}_{1}}=0.5,{{a}_{2}}=0.08 ω(n)=a0a1cos(N12πn)+a2cos(N14πn),a0=0.42,a1=0.5,a2=0.08
在这里插入图片描述

凯瑟窗

ω ( n ) = I 0 ( π a 1 − ( 2 n N − 1 − 1 ) 2 ) I 0 ( π a ) displaystyle omega (n)=frac{{{{I}_{0}}(pi asqrt{{1-{{{(frac{{2n}}{{N-1}}-1)}}^{2}}}})}}{{{{I}_{0}}(pi a)}} ω(n)=I0(πa)I0(πa1(N12n1)2 )
在这里插入图片描述
参考资料

Copyright © 2020 by RichardYang. All rights reserved.
仅供参考,严禁转载,感谢。

最后

以上就是精明犀牛为你收集整理的Matlab2019b关于窗函数的详细设置(dsp.window)使用窗函数来截取一段无限长(非常长:远大于一帧的长度)的信号,形象的来描述就是透过一个窗户来看一个信号,这个窗户的形状会对信号有一定的影响。使用窗函数可以减少截断时的噪声(一刀切边缘会产生很多的高频谐波(吉布斯效应),从而造成频谱泄露(FFT的时候会搞出来很多原本信号没有的频率),所以切下去的时候要温柔一点,搞一点弧线,又不能太影响信号本身,继而出现了下面N种窗函数)常见窗函数的全部内容,希望文章能够帮你解决Matlab2019b关于窗函数的详细设置(dsp.window)使用窗函数来截取一段无限长(非常长:远大于一帧的长度)的信号,形象的来描述就是透过一个窗户来看一个信号,这个窗户的形状会对信号有一定的影响。使用窗函数可以减少截断时的噪声(一刀切边缘会产生很多的高频谐波(吉布斯效应),从而造成频谱泄露(FFT的时候会搞出来很多原本信号没有的频率),所以切下去的时候要温柔一点,搞一点弧线,又不能太影响信号本身,继而出现了下面N种窗函数)常见窗函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部