主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

sgolayfilt

Savitzky-Golayフィルター

説明

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

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

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

すべて折りたたむ

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

订单= 3;framelen = 11;lx = 34;x = randn (lx, 1);山东= sgolayfilt (x,秩序,framelen);情节(x,“:”)举行情节(山东,“。”)传说(“信号”,“sgolay”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表信号,sgolay。

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

m = (framelen-1) / 2;B = sgolay(顺序,framelen);稳定= conv (x、B (m + 1,:)“相同”);情节(稳定)传说(“信号”,“sgolay”,“稳定”

图中包含一个坐标轴。轴线包含3个线型对象。这些物体代表信号,sgolay,稳定。

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

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

ybeg = B (1: m:) * x (1: framelen);

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

yend = B (framelen-m + 1: framelen:) * x (lx-framelen + 1: lx);

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

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

图中包含一个坐标轴。轴包含4个线型对象。这些物体代表信号,sgolay,稳定,完整。

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

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

负载mtlbt =(0:长度(mtlb) 1) / Fs;

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

rd = 9;fl = 21;smtlb = sgolayfilt (mtlb, rd, fl);子图(2,1,1)plot(t,mtlb) axis([0.2 0.22 -3 2]) title(“原始”图(t,smtlb)轴([0.2 0.22 -3 2])标题(“过滤”网格)

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

計算を繰り返しますが,今回はカイザーウィンドウを重みベクトルとして使用します。形状係数 β 38 を指定します。新しいフィルター処理された信号をプロットします。

kmtlb = sgolayfilt (mtlb, rd, fl, kaiser (fl, 38岁));次要情节(2,1,2)绘制(t,kmtlb)轴([0.2 0.22 -3 2])保持

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

入力引数

すべて折りたたむ

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

データ型:|

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

データ型:|

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

データ型:|

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

データ型:|

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

データ型:|

出力引数

すべて折りたたむ

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

ヒント

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

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

参照

Sophocles J. Orfanidis,信号处理导论。Englewood Cliffs, NJ: Prentice Hall, 1996。

[2]谢弗,罗纳德。“什么是萨维茨基-戈莱过滤器?”(讲稿)。”IEEE信号处理杂志,第28期。4(2011年7月):111-17。https://doi.org/10.1109/MSP.2011.941097。

拡張機能

C / c++コード生成
MATLAB®编码器™を使用してCおよびc++コードを生成します。

R2006aより前に導入