Main Content

ルックアップ テーブルの最悪誤差

関数ルックアップ テーブルの任意の点における誤差は、その点での理想関数と対応する Y 値との差分の絶対値であり、隣接するブレークポイント間を線形内挿することで求められます。ルックアップ テーブルの "最悪誤差"、すなわち "最大絶対誤差" は、ブレークポイントを含む区間内のすべての誤差の最大絶対値です。

たとえば、理想関数が平方根でルックアップ テーブルのブレークポイントが 0、0.25、および 1 の場合、ルックアップ テーブルの完全な実装では、最悪誤差は 1/8 = 0.125 で 1/16 = 0.0625 の点で発生します。実際には、固定小数点の量子化や他の要因に応じて、誤差は大きくなる可能性があります。

次の節では、関数 fixpt_look1_func_plot を使用して平方根関数に対するルックアップ テーブルの最悪誤差を見つける方法を示します。

平方根関数の近似

この例は、関数 fixpt_look1_func_plot を使用して、ブレークポイントが 0、0.25、および 1 にある単純なルックアップ テーブルの最大絶対誤差を見つける方法を示します。ブレークポイントの平方根を使用して見つけられるルックアップ テーブルの対応する Y データ点は 0、0.5、および 1 です。

関数 fixpt_look1_func_plot を使用するには、最初にパラメーターを定義する必要があります。これを行うには、MATLAB プロンプトで以下のように入力します。

funcstr = 'sqrt(x)'; % Define the square root function
xdata = [0;.25;1]; % Set the breakpoints
ydata = sqrt(xdata); % Find the square root of the breakpoints
xmin = 0; % Set the minimum breakpoint
xmax = 1; % Set the maximum breakpoint
xdt = ufix(16); % Set the x data type
xscale = 2^-16; % Set the x data scaling
ydt = sfix(16); % Set the y data type
yscale = 2^-14; % Set the y data scaling
rndmeth = 'Floor'; % Set the rounding method

ルックアップ テーブルの最悪誤差および誤差のプロットを取得するには、以下を入力します。

errworst = fixpt_look1_func_plot(xdata,ydata,funcstr, ...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth)

Figure contains 2 axes objects. Axes object 1 with title Function sqrt(x) Ideal (red) Fixed-Point Lookup Approximation (blue), ylabel Outputs contains 2 objects of type line. Axes object 2 with xlabel Input, ylabel Absolute Error contains 2 objects of type line, text.

errworst = 0.1250

上のボックス (出力) には、平方根関数のプロットが表示され、固定小数点ルックアップ近似のプロットがその下に表示されます。近似はブレークポイント間の線形内挿で求められます。下のボックス (絶対誤差) には、0 ~ 1 の区間内のすべての点の誤差が表示されます。最大絶対誤差は 0.0625 で発生していることに注意してください。ブレークポイントの誤差は 0 です。