3.2 Filter

文章推薦指數: 80 %
投票人數:10人

Median Filter:對抑制脈衝雜訊效果顯著的中位數濾波器。

... Notch Filter:此元件目的在於濾除訊號中的某個頻率。

... 以上是為低通濾波器,若為高通則為:. 3.2Filter 本模組提供數種常見之濾波器,以濾除訊號中特定的資料內容。

FIRFilter:基本的有限脈衝響應濾波器(FiniteImpulseResponseFilter)。

MedianFilter:對抑制脈衝雜訊效果顯著的中位數濾波器。

MovingAverageFilter:移動平均濾波器可消除隨機產生之雜訊。

IterativeGaussianFilter:此元件目的在於濾除訊號非週期之部份。

TrendEstimater:為IterativeGaussianFilter之簡化版,可抓取非週期訊號。

NotchFilter:此元件目的在於濾除訊號中的某個頻率。

CombFilter:為一梳形濾波器,用於濾除一系列等間距的頻率。

3.2.1FIR Filter 有限脈衝響應(FiniteImpulseResponse)濾波器,是訊號處理中基本(Basis) 濾波器原型,可針對高頻、低頻或指定的頻段濾波。

有限(Finite)是指此濾波器對於訊號的反應時間是有限的。

說明 假設有一訊號,為如下圖形: 傅立葉轉換後圖型如下,在此希望將其高頻部份濾除,只保留低頻部份: (黑細線為原本訊號的傅立葉轉換,紅粗線為希望保留與濾除的頻率分界) 因此,在傅立葉空間定義出上述紅線的函數,並將此函數與原本訊號的傅立葉轉換相乘: 再做傅立葉逆轉換,就可得到濾除高頻部份的圖型: 以上是為低通濾波器,若為高通則為: 帶通(BandPass): 反帶通(BandStop) ByPass則為全通。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

FIRFilter的主要參數為FilterType,預設包括 LowPass、HighPass、BandPass、BandStop、ByPass等五種型態。

LowPass表示過濾掉頻率F1 以上的訊號,HighPass則過濾頻率F1以下的訊號。

BandPass代表保留頻段F1至F2間的訊號,BandStop 則是濾掉頻段F1至F2間的訊號。

ByPass則為所有頻率皆可通(即為原輸入訊號)。

各參數定義與預設值如下表: 參數名稱 參數定義 預設值 FilterType 預設五種形態,包括LowPass、HighPass、BandPass、BandStop、ByPass。

LowPass F1 對於LowPass以及HighPass而言,F1代表濾波器過濾頻段的分界點;對於 BandPass、BandStop,F1代表濾波器過濾頻段的起始點,單位為Hz。

10 NormalizedF1 顯示以輸入訊號之Samplingfrequency為依據,正規化後的F1值。

應輸入訊號不同而異。

F2 對於FilterType選擇BandPass與BandStop者,會出現濾波器過濾頻段不終點F2,單位為 Hz。

50 FilterOrder 濾波器轉換函數的離散點,N即為N-orderFilter。

範例(Example) 本範例將示範以三個頻率各為10、51、193Hz的SineWave加上振幅0.1的WhiteNoise 當作輸入訊號,再用FIRFilter過濾不同頻率的訊號,步驟如下: Network視窗下選擇Source/Noise產生一個白色雜訊,設定Properties/Amplitude 為0.3,再用Source/SineWave產生三個SineWave,並改變其Properties/ SignalFreq為10、51、193Hz,最後以Compute/Channel/ Mixer將上述訊號混合(將各訊號源之Output拉至Mixer的Input),用Viewer/Channel Viewer繪出。

可以將Mixer的結果接上Compute/Transform/FourierTransform, 以觀察頻譜圖,以方便接下來的FIRFilter設計 於 Mixer圖示選擇Compute/Filter/FIRFilter,調整Properties/ F1為25Hz,FilterType預設為LowPass,用ChannelViewer 顯示濾波結果。

觀察結果,輸入訊號在頻率25Hz以上的部份皆被濾除,輸出訊號類似10Hz的SineWave,不過因 FilterOrder僅101,所以波形有所影響。

重覆步驟2新增一FIRFilter,調整參數FilterType等於HighPass,F1改為 100Hz,FilterOrder為500,結果如下圖所示,濾波器過濾掉頻率100Hz以下之訊號,結果為頻率193Hz的 SineWave加上WhiteNoise。

再重覆步驟2新增一FIRFilter,調整參數FilterType為BandPass,F1改為 25Hz,再設定頻率下限F2為100Hz,FilterOrder設為500,在頻段25~100Hz 的訊號會通過,其它訊號則被濾掉,所以結果為51Hz的SineWave。

相關指令 Noise、Sine、Mixer。

參考: 1.http://en.wikipedia.org/wiki/Finite_impulse_response 2.http://cnx.org/content/m11918/latest/ 3.2.2Median Filter MedianFilter是一維的非線性濾波器,計算濾波範圍(filterorder) 內訊號之中位數作輸出結果,對於抑制脈衝雜訊(Specklenoise)效果顯著,同時能保持訊號波形邊緣的可辨度(edge detection)。

說明 代表長度為N之輸入訊號,為濾波後的訊號,M為作濾波計算時所取的訊號長度,則 Medianfilter定義為: 上式表示,在第i個位置為中心,前後分別取個點成為一組數列,再找出該數列的中位數以取代訊號第i 個位置的值;若點數不足時(如,或在),則將範圍內最邊界點的值複製,用以填補至足夠的點為址。

程式預設 M為奇數,若輸入為偶數,則自動將個數加一,以使成為為奇數。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

參數名稱 參數定義 預設值 FilterOrder 作Medianfilter所選取的數列長度,即為M,設定為奇數,如輸入偶數,則程式自動加1變為奇數。

101 範例(Example) 本範例(Example)將示範以一個方波加上SpeckleNoise當作輸入訊號,再用Medianfilter 濾波的過程,步驟如下: 於Network視窗下按右鍵,選擇Source/Noise產生一個雜訊,設定Properties/ NoiseType為Speckle,Probability設為0.25,另外選擇Source/SquareWave 產生一方波,以Compute/Channel/Mixer將兩訊號混合,用Viewer/ChannelViewer 顯示於視窗。

另點選 Mixer圖示選擇Compute/Filter/Median Filter,調整Properties/FilterOrder為5,再用Viewer/ChannelViewer 顯示濾波結果。

步驟2已可得到不錯的濾波效果,如再調整MedianFilter的參數FilterOrder為 21,結果如下圖所示,FilterOrder增加了約4倍,不但specklenoise 已經完全濾掉,而且在波形邊緣仍維持良好的陡峭度。

最後回到Noise圖示,將NoiseType由Specklenoise改為Whitenoise藉此測試 Medianfilter的特性,結果如下,可觀察到Medianfilter無法完全過濾Whitenoise 造成的影響,但波型邊緣仍大部份維持著,此即為Medianfilter的主要功用。

相關指令 Noise、Square、Mixer、MovingAverageFilter。

參考 http://en.wikipedia.org/wiki/Median_filter 3.2.3Moving AverageFilter MovingAverageFilter 是藉由對濾波範圍內訊號取平均值,目的為降低離散時間訊號中的雜訊,增加峰值的可辨度。

其特點為理論簡單,計算快速。

說明 令代表長度為N之輸入訊號,為濾波結果,若濾波範圍為(AverageLength)為 M個訊號,則其輸出為: 上式的意義為:總面積為1,時間軸上長度為M的長方形濾波器對輸入訊號做折積(convolution)。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

MovingAverageFilter包括兩個參數:FilterType與 AverageLength,AverageLength代表求平均所取的訊號個數M,單位為時間。

FilterType 為設定濾波器高、低頻段的過濾,內有三個選項分別為LowPass、HighPass及ByPass,LowPass 即為執行上述理論的計算值;HighPass則為輸入訊號減去LowPass之計算結果;而ByPass 的輸出,即等於輸入訊號(因為HighPass+LowPass=原訊號),參數預設值詳見下表。

參數名稱 參數定義 預設值 FilterType 為設定濾波器對訊號高、低頻段的過濾,選項為LowPass、HighPass及ByPass。

LowPass AverageLength 作平均所設定的訊號長度,單位為時間。

0.05 AverageCount 顯示AverageLength所對應的訊號個數。

依AverageLength而自動調整。

範例(Example) 本例將混合一個頻率為2Hz、振幅為1、長度2秒的方波與一個振幅為0.5,長度為2秒的WhiteNoise,以 MovingAverageFilter濾波,並設定不同的AerageLength觀察對原訊號所造成的影響。

按右鍵選用Source/SquareWave創造方波,改變Properties/TimeLength欄位為 2,SignalFreq欄位改為2。

接著再按右鍵點選Source/Noise/WhiteNoise創造White Noise,TimeLength設為2,Amplitude設為0.5。

最後按右鍵選Compute/Channel/ Mixer將兩訊號相加,再用Viewer繪出。

於Mixer按右鍵選擇Compute/Filter/MovingAverage,對輸入訊號作Moving Average,可於Properties/AverageLength欄位看到預設值等於0.1s,AverageCount 欄位顯示共101個資料,代表MA輸出的每一點為其輸入訊號前後共101個資料點的平均,FilterType/ LowPass表示輸出為MovingAverage的計算值,最後用Viewer/ChannelViewer 將結果繪出。

按照步驟2對Mixer再做一次MovingAverage,產生名為MA2圖示,但改變其 AverageLength為0.2,並將結果用Viewer繪出。

比較步驟1、2、3的結果,可發現調高AverageLength 可明顯降低輸入訊號的雜訊,但是此濾波器之缺點為:原始方波訊號陡峭的邊界隨著AverageLength 提高而變的越來越平緩。

再對Mixer做MovingAverage,將FilterType修改為 HighPass,可看到結果等於輸入訊號減去MA2的輸出訊號。

相關指令 Square,Noise,Mixer。

參考 http://www.dspguide.com/ch15.htm 3.2.4 IterativeGaussianFilter 各種訊號大部分可視為一周期性訊號加上非週期性訊號。

透過IterativeGaussianFilter (Smoothing)得到其周期性部分或非周期性部分的訊號。

產生一個Sine波(Sinewave),經由FourierTransform 會產生如下圖所示的一個單一峰值的頻譜。

由此可知Sine波的頻率為3Hz。

但如下圖所示的訊號(Sine+Exponentialterm);其頻率或週期為何?將此訊號透過Fourier Transform則得到如下圖所示的頻譜:訊號多分佈在低頻處,它掩蓋了Sine波的頻率特徵而不是我們希望得到的答案(3Hz )。

為解決此問題,我們可把此訊號拆成一個Sine波加上一個指數函數;換言之我們希望把一個訊號拆解成一個周期性訊號( periodicsignal)加上一個非周期性訊號(non-periodicsignal )。

如此對此訊號我們希望同時回答兩件事:(1)訊號的周期性部分為何?或其頻譜為何?(2)其趨勢(trend)為何? 說明 但訊號也可能是因為量測時間不夠長(小於一個周期),使得此訊號看起來含有非周期性訊號。

那訊號的趨勢究竟為何?我們可以平均的概念描述之。

對訊號 每一點而言,其高斯平均(GuassianAverage ): 此數學式說明點的值乃由其鄰近的點的平均值來代表,離j 點愈遠其權重愈小。

所組成的新訊號較平滑,也就是其高頻部分被平滑化後消失了。

再將做高斯平均,疊代(反覆此步骤)若干次後得到的 ,(m為疊代次數) 的總和即為周期性訊號趨勢訊號。

原訊號減去周期性訊號即為其較低頻的趨勢訊號。

數學上可證明GaussianFilter 相當於如下圖的濾波器。

以趨勢訊號(lowpassfilter)為例,會將小於的部分完全通過,而濾除(絕大部分)大於而中間的部分則為高斯分佈。

疊代次數 m與參數可由、以及b(AttenuationFactor) 求得。

b為很小的值,較常用的值為0.01或0.001,可選定為2至10。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

各參數定義如下。

參數名稱 參數定義 預設值 FilterType 此IterativeGaussianFilter的濾波形式 LowPass:低頻部分可通過,濾除高頻。

HighPass:低頻部分可通過,濾除高頻。

ByPass:無任何頻段訊號被濾除。

LowPass Attenuation 濾波中Gaussian曲線的參數值 0.01 FH 過濾頻段中的較高值。

10 FL 過濾頻段中的較低值。

2 範例(Example) 範例為將一個形式的訊號(即如一開始圖型的訊號),以Iterative GaussianFilter濾除掉部份。

建立一個SineWave,設定時間長度為10秒,頻率為3Hz;再建立一個CustomWave,在 expression內輸入exp(t/3.2),同樣時間長度設為10秒。

之後將此兩訊號以Mixer 混合,並接上ChannelViewer繪製圖形。

(可將此訊號接上傅立葉轉換以觀察其特性) 之後由Mixer處,連結上IterativeGaussianFilter,並設定FilterType為 HighPass、FH為0.5,FL為0.1(因為已知Sine的頻率為3Hz,是故只要設定FH為一低於3Hz ,以讓SineWave通過)。

濾除後結果接上ChannelViewer,可發現結果還算接近原本的SineWave。

而在訊號尾端,濾除結果與原本 Sine訊號有差異,是濾除不夠乾淨,而需調整參數以獲得更佳結果。

(細黑線:為原本的Sine;粗紅線:為經濾波後還原的結果。

) 可將IterativeGaussianFilter裡的FH設為2.5、L設為 0.01,再重新計算一次。

在此可發現濾波效果更佳、更接近原本的Sine。

相關指令 TrendEstimater,CustomWave,FourierTransform。

參考 1.YihNenJeng,"DiffusiveandFastFilterUsingIterative GaussianSmoothing",DepartmentofAeronauticsandAstronautics, NationalChengKungUniversity 2.http://www.ancad.com/blog/AnCADSupport/wp-content/uploads/2008/05/it-gauss-2008-7.pdf 3.2.5Trend Estimater TrendEstimater是IterativeGaussianFilter的簡易參數版,詳細可參閱 IterativeGaussianFilter。

在對訊號特性掌握較不完全時,無需詳細設定,即可用TrendEstimater 算出其趨勢。

說明 演算法請參閱IterativeGaussianFilter章節。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

各參數定義如下。

參數名稱 參數定義 預設值 FilterType 與IterativeGaussianFilter的相同。

LowPass:(低通)萃取出低頻部分。

HighPass:(高通)萃取出高頻部分。

ByPass:無任何頻段訊號被濾除。

LowPass TrendBasis 以(Period)周期為參考設定參數或(Frequency)頻率為參考設定參數 Frequency 若是TrendBasis設定為Period,其參數定義如下表。

參數名稱 參數定義 預設值 TrendPeriod 週期高於此值者,則視為趨勢訊號。

與IterativeGaussianFilter對應則為: FL(=2/TrendPeriod) FH(=4/TrendPeriod) 0 TimeUnit 設定TrendPeriod的單位。

Default DefaultTimeUnit 輸入訊號的原始時間單位。

sec 若是TrendBasis設定為Frequency,其參數定義如下表。

參數名稱 參數定義 預設值 TrendFrequency 頻率低於此值者,則視為趨勢訊號。

與IterativeGaussianFilter對應則為: FL(=2*TrendFrequency) FH(=4*TrendFrequency) 0 FrequencyUnit 設定TrendFrequency的單位。

Default DefaultFrequencyUnit 輸入訊號經傅立葉轉換後的原始單位。

Hz 範例(Example) 先從YahooFinance:YahooFinanceLink 下載一筆2330.TW(台積電)2005-01-01到2010-03-17的開盤價,另存CSV 檔案,由於星期六、日或假期沒有開盤,所以暫且不將日期資料加入,利用TextImporter開啟檔案,DataRange/ SpecifyTimeColumn為Unchecked和Columns:2toend,DateAxis/Auto 為Unchecked,TimeCoordinate/TimeUnit為day以及SamplingFrequency 為1,讓讀取進來訊號屬於regular,時間單位為day。

最後連接至Viewer/ChannelViewer 顯示。

將訊號源接上TrendEstimater,其中參數皆為預設值,最後將結果接至同一個ChannelViewer 顯示其結果,黑線為原始股價變化,藍線為股價趨勢。

最後要將日期資訊取代現有的時間軸,將regular訊號轉成Indexed訊號,利用TextImporter再開啟 CSV檔案,DataRange/SpecifyTimeColumn為Checked,和Columns:2to end,讀取進來訊號屬於Indexed,時間單位為day。

最後將Trend運算結果連接Conversion/ConverttoIndexed,接下來將剛才讀取進來的 Source(2330.TW2)也連接至ConverttoIndexed,最後將ConverttoIndexed連至 Viewer/ChannelViewer展示,可以看見有日期的資訊出現在X 軸,並可以根據當時發生的事件去推斷股價趨勢變化。

也利用TrendEstimater可以幫助找出地層下陷、大氣溫度、股票等訊號的長時間趨勢。

相關指令 IterativeGaussianFilter。

參考 1.DiffusiveandFastFilterUsingIterativeGaussianSmoothing, YihNenJeng,DepartmentofAeronauticsandAstronautics,National ChengKungUniversity 2.http://www.ancad.com/blog/AnCADSupport/wp-connent/uploads/2008/05/it-gauss-2008-7.pdf 3.2.6Notch Filter NotchFilter為帶拒濾波器,也可稱為帶阻濾波器,目的在將某一特定頻率濾除。

說明 NotchFilter的主要濾除某一特定頻率,若假設濾波器設計為濾除為60Hz的訊號,其Frequency ResponseFunction如下圖。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

各參數定義如下。

參數名稱 參數定義 預設值 CenterFrequency 被濾除的中心頻率。

60 DecibelPoint 設定衰減點,設定的越小所產生帶拒越尖銳。

-3 BandWidth 設濾波器帶寬,定義為衰減點的帶寬,單位為(pi*弧度/取樣頻率)。

0.01 範例(Example) 建立一個Impulsesource,設定ImpulseShape為Square,而且SingleImpulse為 True,再接上Computet/Transform/FourierTransform,最後以ChannelViewer 觀察頻率分佈。

在ImpulseSource後面接上Computer/Filter/NotchFilter,在Notch 後面接上Computet/Transform/FourierTransform,最後以ChannelViewer 觀察頻率分佈可以清楚看見濾除60Hz。

改變NotchFilter中DecibelPoint為-10,以及BandWidth為 0.001,被濾除的頻率和範圍變得更尖銳。

相關指令 CombFilter。

3.2.7Comb Filter CombFilter為梳型濾波器,目的在將某一系列等間距得頻率濾除或保留。

說明 CombFilter的FrequencyResponseFunction如下圖。

參數設定(Properties) 本模組接受實數(realnumber),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)或聲音訊號(audio)輸入;輸出訊號格式與輸入訊號相同。

各參數定義如下。

參數名稱 參數定義 預設值 FilterType 濾波形態,包含CombNotching、CombPeaking。

CombNotching NotchNum 設定0至取樣頻錄率之間的帶拒數目,若濾波型態為CombPeaking,實際帶拒數目=設定帶拒數目-1。

4 DecibelPoint 設定衰減點,設定的越小所產生帶拒越尖銳。

-3 BandWidth 設濾波器帶寬,定義為衰減點的帶寬,單位為(pi*弧度/取樣頻率)。

0.01 範例(Example) 建立一個Impulsesource,設定ImpulseShape為Square,而且SingleImpulse為 True,再接上Computet/Transform/FourierTransform,最後以Channel Viewer觀察頻率分佈。

在ImpulseSource後面接上Computer/Filter/CombFilter,在Comb 後面接上Computet/Transform/FourierTransform,FFT的Max設定為訊號取樣頻率 1000,最後以ChannelViewer觀察頻率分佈可以發現頻率是呈現等間距濾除。

改變CombFilter中FilterType為CombPeaking,以及NotchNum為 11,濾波結果為保留一系列的頻率,其他則濾除。

相關指令 NotchFilter。

ConvertedfromCHMtoHTMLwithchm2webStandard2.85(unicode)



請為這篇文章評分?