Main Content

double

倍精度演算を使用するための固定小数点フィルターのキャスト

構文

hd = double(h)

説明

hd = double(h) は、h と同じ構造と係数を持つ新しいフィルター hd を返しますが、フィルター処理に倍精度演算を使用するためにその演算プロパティが double に設定されます。double(h) は関数 reffilter(h) と同じではありません。

  • double によって返されるフィルター hd は、倍精度浮動小数点形式で表される h の量子化係数をもちます。

  • reffilter によって返される参照フィルターは、量子化されていない倍精度浮動小数点係数をもちます。

double(h) は、double を使用して、量子化されたフィルター係数を使用しながらも倍精度で演算するフィルター hd を作成することによって、フィルターの係数の量子化の影響を分離するのに使用できる場合があります。

すべて折りたたむ

ローパス フィルターを作成します。

h = dfilt.dffir(firgr(27,[0 .4 .6 1],... 
[1 1 0 0]));

フィルター処理に固定小数点演算を使用するように h を設定します。係数を量子化します。

h.arithmetic = 'fixed';

h を倍精度にキャストします。

hd = double(h);

入力信号を設定します。

n = 0:99; x = sin(0.7*pi*n(:));

固定小数点の出力。

y = filter(h,x);

浮動小数点の出力。

yd = filter(hd,x);

固定小数点の出力と浮動小数点の出力を比較します。

FixedFloatNormDiff=norm(yd-double(y),inf)
FixedFloatNormDiff = 2.1234e-05

バージョン履歴

R2011a で導入