日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Window Function--the function of window function

發布時間:2025/3/21 windows 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Window Function--the function of window function 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From :http://blog.sina.com.cn/s/blog_6163bdeb0102dqhq.html

窗函數是頻譜分析中一個重要的部分,窗函數修正了由于信號的非周期性并減小了頻譜中由于泄露而帶來的測量不準確性。

快速傅里葉變換假定了時間信號是周期無限的。但在分析時,我們往往只截取其中的一部分,因此需要加窗以減小泄露。窗函數可以加在時域,也可以加在頻域上,但在時域上加窗更為普遍。截斷效應帶來了泄漏,窗函數是為了減小這個截斷效應,其設計成一組加權系數。例如,一個窗函數可以定義為:
w(t)=g(t)???????-T/2<t<T/2
w(t)=0??????????其他

g(t)是窗函數,T是窗函數的時間.

待分析的數據x(t)則表示為:

x(t)=w(t)*x(t)'

x(t)'表示原始信號,x(t)表示待分析信號。

?

加窗在時域上表現的是點乘,因此在頻域上則表現為卷積。卷積可以被看成是一個平滑的過程。這個平滑過程可以被看出是由一組具有特定函數形狀的濾波器,因此,原始信號中在某一頻率點上的能量會結合濾波器的形狀表現出來,從而減小泄漏?;谶@個原理,人們通常在時域上直接加窗。

大多數的信號分析儀一般使用矩形窗(rectangular),漢寧(hann),flattop和其他的一些窗函數。

矩形窗函數:
w(k)=1

漢寧窗:?????
w(k)=0.5*(1-cos(2*pi*k/(N-1)))?????0<=k<=N-1

由于加窗計算中衰減了原始信號的部分能量,因此對于最后的結果還需要加上修正系數。在線性譜分析中,一般使用幅度系數(amplitude correction),在功率譜中,一般使用能量系數(energy correction)。(這段不清楚在實際中如何用)

?

matlab中提供了很多窗函數,如下

還提供了顯示窗函數的GUI工具,如wvtool可以顯示用來顯示窗的形狀和頻域圖形,wintool可以打開窗設計和分析工具,如運行

wvtool(hamming(64),hann(64),gausswin(64))

可以對比漢明窗、漢寧窗和高斯窗

?

簡單測試一下加窗的效果如下

可以看到加窗后,頻譜泄露確實減少了,但同時信號能量也減小了,這也許就是所說的要使用能量系數吧,如下,這樣一來,對比就更明顯了,加窗可以有效的減少頻譜泄露。

?

測試代碼如下

%% 窗函數測試
function main
clc
close all

Ts = 0.001;
Fs = 1/Ts;
%% 原始信號
t = 0:Ts:pi/2;
yt = sin(2*pi*5*t) + sin(2*pi*10*t) + sin(2*pi*15*t);
[Yf, f] = Spectrum_Calc(yt, Fs);

figure
subplot(211)
plot(t, yt)
xlabel('t')
ylabel('y')
title('原始信號')
subplot(212)
plot(f, Yf)
xlabel('f')
ylabel('|Yf|')
xlim([0 100])
ylim([0 1])
title('原始信號頻譜')

%% 加窗信號
win = hann(length(t));
yt1 = yt.*win';
[Yf1, f1] = Spectrum_Calc(yt1, Fs);

figure
subplot(211)
plot(t, yt1)
xlabel('t')
ylabel('y')
title('加窗信號')
subplot(212)
plot(f1, 2*Yf1) % 2表示能量系數
xlabel('f')
ylabel('|Yf|')
xlim([0 100])
ylim([0 1])
title('加窗信號頻譜')
end

%% 求取頻譜
function [Yf, f] = Spectrum_Calc(yt, Fs)
L = length(yt);

NFFT = 2^nextpow2(L);
Yf = fft(yt,NFFT)/L;

Yf = 2*abs(Yf(1:NFFT/2+1));
f = Fs/2*linspace(0,1,NFFT/2+1);
end

轉載于:https://www.cnblogs.com/XinZhou-Annie/p/7398161.html

總結

以上是生活随笔為你收集整理的Window Function--the function of window function的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。