Main Content

fixpt_look1_func_approx

ルックアップ テーブルのデータ点を内挿することによって、非線形関数の固定小数点近似を最適化

構文

[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,nptsmax)
[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[])
[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax)
[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydtydt,yscale,rndmeth,errmax,nptsmax,spacing)

説明

[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,nptsmax)
は、ルックアップ テーブルの最適ブレークポイント、ブレークポイントに適用された理想関数、最悪の近似誤差を返します。ルックアップ テーブルは、指定された最大許容誤差と点数の最大数を満たします。

[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[])
は、ルックアップ テーブルの最適ブレークポイント、ブレークポイントに適用された理想関数、最悪の近似誤差を返します。ルックアップ テーブルは、指定された最大許容誤差を満たします。

[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax)
は、ルックアップ テーブルの最適ブレークポイント、ブレークポイントに適用された理想関数、最悪の近似誤差を返します。ルックアップ テーブルは、指定された点数の最大値を満たします。

[xdata,ydata,errworst] = fixpt_look1_func_approx('func',...
xmin,xmax,xdt,xscale,ydtydt,yscale,rndmeth,errmax,nptsmax,spacing)
は、ルックアップ テーブルの最適ブレークポイント、ブレークポイントに適用された理想関数、最悪の近似誤差を返します。ルックアップ テーブルは、指定された最大許容誤差、点数の最大数、ブレークポイント間隔を満たします。

どの場合も、fixpt_look1_func_approx は固定小数点近似が最適化されるように、ルックアップ テーブルのデータ点を内挿します。入力 xminxmax はブレークポイントを近似する範囲を指定します。入力 xdtxscaleydtyscale、および rndmeth は固定小数点 Simulink® ブロックの規則に従います。

入力 errmaxnptsmax、および spacing はオプションです。これらの入力のうち、最低 errmax または nptsmax を指定する必要があります。この 2 つのうちの 1 つを省略する場合は、省略された入力の代わりに大かっこ [] を使用する必要があります。fixpt_look1_func_approx はその要件をルックアップ テーブルで無視します。

間隔を指定しないでおくと、errmaxnptsmax を満たす間隔が 1 つを超えてある場合、fixpt_look1_func_approx は 2 のべき乗の間隔、等間隔、不等間隔の順に選択します。この動作は errmaxnptsmax を両方とも指定した場合に適用されますが、どちらか 1 つを指定した場合には適用されません。

入力引数

func

ブレークポイントの近似に使用する x の関数。この式は一重引用符で囲みます。たとえば、'sin(2*pi*x)'

xmin

x の最小値。

xmax

x の最大値。

xdt

x のデータ型。

xscale

x 値のスケーリング。

ydt

y のデータ型。

yscale

y 値のスケーリング。

rndmeth

固定小数点の Simulink ブロックでサポートされる丸め処理モード。

'Ceiling'

正の無限大方向の最も近い表記可能な数値に丸めます。

'Floor' (既定の設定)

負の無限大方向の最も近い表記可能な数値に丸めます。

'Nearest'

最も近くの表記可能な数値に丸めます。

'Toward Zero'

ゼロに近づく方向の最も近い表記可能な数値に丸めます。

errmax

理想関数とルックアップ テーブルから得られた近似値の間の最大許容誤差。

nptsmax

ルックアップ テーブルの点数の最大数。

spacing

ルックアップ テーブルのブレークポイントの間隔。

'even'等間隔
'pow2'均等な 2 のべき乗間隔
'unrestricted' (既定の設定)不等間隔
指定する項目ルックアップ テーブルのブレークポイントが満たす条件

errmax および nptsmax

可能な限り、両方の条件を満たす。

errmaxnptsmax より高い優先順位をもつ。ブレークポイントが、指定された間隔で両方の条件を満たせない場合、nptsmax は適用されない。

errmax のみ

誤差条件を満たし、fixpt_look1_func_approx は最も少ない点数を返す。

nptsmax のみ

点数条件を満たし、fixpt_look1_func_approx は最も小さい最悪誤差を返す。

出力引数

xdata

ルックアップ テーブルのブレークポイントのベクトル。

ydata

ブレークポイントに理想関数を適用して得た値のベクトル。

errworst

最悪誤差。理想関数とルックアップ テーブルから得られた近似値の間の最大絶対誤差。

ルックアップ テーブルを使用して、固定小数点の正弦関数を近似します。

func = 'sin(2*pi*x)';
% Define the range over which to optimize breakpoints
xmin = 0;
xmax = 0.25;
% Define the data type and scaling for the inputs
xdt = ufix(16);
xscale = 2^-16;
% Define the data type and scaling for the outputs
ydt = sfix(16);
yscale = 2^-14;
% Specify the rounding method
rndmeth = 'Floor';
% Define the maximum acceptable error
errmax = 2^-10;
% Choose even, power-of-2 spacing for breakpoints
spacing = 'pow2';
% Create the lookup table
[xdata,ydata,errworst] = fixpt_look1_func_approx(func,...
 xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[],spacing);

バージョン履歴

R2006a より前に導入