Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

wthresh

ソフトなしきい値処理またはハードなしきい値処理

説明

Y = wthresh(X,sorh,T) は、sorh の指定に応じて、ベクトルまたは行列 X のソフトなしきい値処理またはハードなしきい値処理を返します。T はしきい値です。

すべて折りたたむ

信号を生成し、しきい値を設定します。

y = linspace(-1,1,100);
thr = 0.4;

ハードなしきい値処理とソフトなしきい値処理を実行します。

yhard = wthresh(y,"h",thr);
ysoft = wthresh(y,"s",thr);

結果をプロットして、元の信号と比較します。

tiledlayout(1,3)
nexttile
plot(y,y)
ylim([-1 1])
title("Original Signal")
nexttile
plot(y,yhard)
ylim([-1 1])
title("Hard Threshold")
nexttile
plot(y,ysoft)
ylim([-1 1])
title("Soft Threshold")

Figure contains 3 axes objects. Axes object 1 with title Original Signal contains an object of type line. Axes object 2 with title Hard Threshold contains an object of type line. Axes object 3 with title Soft Threshold contains an object of type line.

ノイズがある Doppler 信号を読み込みます。信号の間引きなしの離散ウェーブレット変換をレベル 4 まで下げて求めます。

load noisdopp
wt = modwt(noisdopp,4);

最も細かいスケールのウェーブレット係数に基づいて、Donoho-Johnstone のユニバーサルしきい値を決定します。

thr = median(abs(wt(1,:)-median(wt(1,:))))/0.6745;

ウェーブレット変換にソフトなしきい値処理を適用し、結果を反転して、ノイズ除去された信号を求めます。

wtthr = wthresh(wt,"s",thr);
xden = imodwt(wtthr);

元の信号とノイズ除去後の信号をプロットします。

plot([noisdopp(:) xden(:)])
axis tight
legend("Original","Thresholded",Location="southeast")

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original, Thresholded.

入力引数

すべて折りたたむ

しきい値への入力データ。ベクトルまたは行列として指定します。

データ型: single | double
複素数のサポート: あり

実行するしきい値処理のタイプ。

  • "s" — ソフトなしきい値処理

  • "h" — ハードなしきい値処理

しきい値。正の実数として指定します。

データ型: single | double

出力引数

すべて折りたたむ

しきい値処理後のデータ。ベクトルまたは行列として返されます。Y の次元は X と同じになります。

アルゴリズム

sorh"s" の場合、YX のソフトなしきい値処理であり、Y=sign(X)·(|X|T)+ となります。

(x)+={xifx00otherwise

ソフトなしきい値処理は、ウェーブレットの縮小です。

sorh"h" の場合、YX のハードなしきい値処理であり、Y=X·1(|X|>T) となります。

1(|X|>T)={1if|X|>T0otherwise

ハードなしきい値処理は、ソフトなしきい値処理よりも大まかなものになります。

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて展開する