主要内容

sgolayfilt

Savitzky-Golayフィルタ,

説明

y= sgolayfilt (x订单framelenは,ベクトルxのデ,タに,多項式の次数订单およびフレ,ム長framelenのSavitzky-Golay有限ンパルス応答(FIR)平滑化フィルタを適用します。xが行列の場合,sgolayfiltは各列に適用されます。

y= sgolayfilt (x订单framelen权重は,最小二乗の最小化中に使用する重みベクトルを指定します。

y= sgolayfilt (x订单framelen权重昏暗的は,フィルタ,が作用する次元を指定します。

すべて折りたたむ

ランダムな信号を生成して,sgolayfiltを使用して平滑化します。多項式の次数3 およびフレーム長 11 を指定します。元の信号と平滑化された信号をプロットします。

Order = 3;帧数= 11;Lx = 34;X = randn(lx,1);SGF = sgolayfilt(x,order,frame);情节(x,“:”)举行情节(山东,“。”)传说(“信号”“sgolay”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物体代表信号,斯戈雷。

関数sgolayfiltは,信号と中心の行Bsgolayの出力)の畳み込みを行って,ほとんどのフィルタ,処理を実行します。結果はフィルタ,処理された信号の定常状態部分です。この部分を生成およびプロットします。

M =(帧色-1)/2;B = sgolay(顺序,框架);stable = conv(x,B(m+1,:)),“相同”);情节(稳定)传说(“信号”“sgolay”“稳定”

图中包含一个轴对象。axis对象包含3个line类型的对象。这些物体代表信号、信号、稳定。

信号エッジの近傍のサンプルは対称ウィンドウの中心に配置できないため,異なる方法で扱わなければなりません。

開始時の過渡状態を求めるため,行列はBの最初の(framelen-1) / 2行を信号の最初のframelenサンプルで乗算します。

ybeg = B(1:m,:)*x(1:框架);

終了時の過渡状態を求めるため,行列はBの最後の(framelen-1) / 2行を信号の最後のframelenサンプルで乗算します。

yend = B(帧色-m+1:帧色,:)*x(lx-帧色+1:lx);

過渡状態と定常状態部分を連結して,完全な信号を生成します。

cplt =稳定;cplt (1:m) = ybeg;Cmplt (lx-m+1:lx) = yend;情节(cmplt)传说(“信号”“sgolay”“稳定”“完成”)举行

图中包含一个轴对象。axis对象包含4个line类型的对象。这些物体代表信号、平稳、完整。

最小化に重みを加えると,Bの対称性がこわれ,正しい解を得るために追加のステップが必要になります。

F 年代 7418 赫兹 でサンプリングされた音声信号を読み込みます。ファaapl . exe .ルには," matlab®"という単語を発声している女性の録音音声が含まれています。

负载mtlbt = (0:length(mtlb)-1)/Fs;

21の長さのデータフレームに多項式の次数が9のSavitzky-Golayフィルターを適用して,信号を平滑化します。元の信号とフィルター処理された信号をプロットします.0.02秒区間を拡大します。

Rd = 9;Fl = 21;SMTLB = sgolayfilt(mtlb,rd,fl);Subplot (2,1,1) plot(t,mtlb)轴([0.2 0.22 -3 2])“原始”)网格subplot(2,1,2) plot(t,smtlb)轴([0.2 0.22 -3 2])“过滤”网格)

图中包含2个轴对象。标题为Original的坐标轴对象1包含一个类型为line的对象。标题为Filtered Axes对象2包含一个类型为line的对象。

計算を繰り返しますが,今回はカ。形状係数 β 38 を指定します。新しいフィルタ,処理された信号をプロットします。

KMTLB = sgolayfilt(mtlb,rd,fl,kaiser(fl,38));次要情节(2,1,2)Plot (t,kmtlb)轴([0.2 0.22 -3 2])hold住

图中包含2个轴对象。标题为Original的坐标轴对象1包含一个类型为line的对象。标题为Filtered坐标轴对象2包含2个类型为line的对象。

入力引数

すべて折りたたむ

ベクトルまたは行列として指定される入力信号。

デ,タ型:|

多項式の次数。正の整数として指定します。订单framelenよりも小さくしなければなりません。订单framelen- 1の場合,フィルタでは平滑化は行われません。

デ,タ型:|

フレ,ム長。正の奇数の整数で指定します。

デ,タ型:|

重み付け配列。長さframelenの正の実数ベクトルまたは正の実数行列で指定します。

デ,タ型:|

フィルタ,を適用する次元。正の整数のスカラーで指定します。既定では、sgolayfiltはサesc escズが1より大きいxの最初の次元に沿って機能します。

デ,タ型:|

出力引数

すべて折りたたむ

フィルタ,処理された信号。ベクトルまたは行列として返されます。

ヒント

Savitzky-Golay平滑化フィルターは,通常,ノイズを含むがノイズのない部分の周波数範囲が広い信号の“平滑化”に使用されます。このフィルタ,は,デジタル平滑化多項式フィルタ,または最小二乗平滑化フィルタ,とも呼ばれます。一部のアプリケーションでは,Savitzky-Golayフィルターの方が標準の平均化冷杉フィルターよりうまく機能します。これは,標準の平均化冷杉フィルターでは,ノイズと共に高周波数成分がフィルター処理されるためです。Savitzky-Golayフィルタ,は高周波数信号成分を維持するには効果的ですが、ノイズの除去には優れていません。

Savitzky-Golayフィルターは,多項式をノイズデータの各フレームに近似する上で,最小二乗誤差を最小にするという意味で最適なものです。Savitzky-Golayアルゴリズムの詳細にいては,sgolayを参照してください。

参照

[1] Orfanidis, Sophocles .信号处理导论。恩格尔伍德悬崖,新泽西州:普伦蒂斯大厅,1996年。

谢弗,罗纳德。什么是Savitzky-Golay滤波器?(讲稿)。”IEEE信号处理杂志第28期。4 (July 2011): 111-17。https://doi.org/10.1109/MSP.2011.941097。

拡張機能

C/ c++コ,ド生成
MATLAB®Coder™を使用してCおよびc++コドを生成します。

バ,ジョン履歴

R2006aより前に導入