В следующих разделах объясняется, как использовать функцию fixpt_look1_func_approx для создания таблиц подстановки. В нем приведены примеры, показывающие, как создавать таблицы подстановки для функции sin (2xeonx) на интервале от 0 до 0,25.
Сначала определите значения параметров для fixpt_look1_func_approx функция.
% Required parameters funcstr = 'sin(2*pi*x)'; % Ideal function xmin = 0; % Minimum input of interest xmax = 0.25; % Maximum input of interest xdt = ufix(16); % x data type xscale = 2^-16; % x data scaling ydt = sfix(16); % y data type yscale = 2^-14; % y data scaling rndmeth = 'Floor'; % Rounding method % Optional parameters errmax = 2^-10; % Maximum allowed error of the lookup table nptsmax = 21; % Maximum number of points of the lookup table
Параметры errmax, nptsmax, и spacing являются необязательными. Необходимо использовать хотя бы один из параметров errmax и nptsmax. Если используется только errmax параметр без nptsmax, функция создает таблицу поиска с наименьшим количеством точек, для которых наихудшая ошибка не превышает errmax. Если используется только nptsmax параметр без errmax, функция создает таблицу подстановки максимум с nptsmax точки с наименьшей наихудшей ошибкой. Вы можете использовать дополнительный spacing для ограничения интервала между точками останова таблицы подстановки.
Использовать errmax с неограниченным интервалом
Создайте таблицу подстановки с наименьшим количеством точек данных для указанной наихудшей ошибки с неограниченным интервалом.
[xdata,ydata,errworst] = fixpt_look1_func_approx(funcstr, ...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[]);Обратите внимание, что nptsmax и spacing параметры не указаны.
length(xdata)
ans = 16
16 точек требуется для аппроксимации ) в пределах допуска, указанного вerrmax. Максимальная ошибка:
errworst
errworst = 9.7656e-04
Значение errworst меньше или равно значению errmax.
Постройте график результатов:
figure(1)
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
На верхнем графике показана идеальная функция ) и аппроксимация таблицы поиска с фиксированной точкой между точками останова. В этом примере идеальная функция и аппроксимация настолько близки друг к другу, что два графика кажутся совпадающими. На нижнем графике отображаются ошибки.
В этом примере точки данных Y, ydata, равны идеальной функции, применяемой к точке в xdata. Однако можно определить другой набор значений для ydata после выполнения fixpt_look1_func_approx. Иногда это может уменьшить максимальную ошибку.
Можно также изменить значения xmin и xmax для вычисления таблицы подстановки для подмножества исходного интервала.
Поиск новой максимальной ошибки после изменения ydata, xmin, или xmax, тип
errworst = fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax, ...
xdt,xscale,ydt,yscale,rndmeth)
Использовать nptsmax с неограниченным интервалом
Создайте таблицу подстановки, которая минимизирует наихудшую ошибку для указанного максимального числа точек данных с неограниченным интервалом.
[xdata, ydata, errworst] = fixpt_look1_func_approx(funcstr, ...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax);Пустые скобки указывают функции игнорировать параметр errmax. Исключение errmax возвращает таблицу подстановки размера, указанного в nptsmax, с наименьшей наихудшей ошибкой.
length(xdata)
ans = 21
Функция возвращает вектор xdata с 21 баллом. Максимальная ошибка:
errworst
errworst = 5.1139e-04
Значение errworst меньше или равно значению errmax.
Постройте график результатов:
figure(2)
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Ограничение интервала
В двух предыдущих примерах функция fixpt_look1_func_approx создает таблицы поиска с неограниченным интервалом между точками. Можно ограничить интервал, чтобы повысить вычислительную эффективность таблицы подстановки с помощью параметра интервала. Обе силы двух, 'pow2'и даже интервал, 'even', увеличить вычислительную скорость таблицы поиска и использовать меньше памяти только для чтения команд (ROM). Однако задание любого из ограничений интервалов вместе с errmax обычно для достижения такой же степени точности требуется больше точек данных в таблице подстановки, чем для неограниченного интервала. Дополнительные сведения см. в разделе Влияние интервалов на скорость, ошибки и использование памяти.
Использовать errmax с четным интервалом
Создайте таблицу подстановки с равномерно расположенными точками останова и указанной наихудшей ошибкой.
spacing = 'even'; [xdata,ydata,errworst] = fixpt_look1_func_approx(funcstr, ... xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[],spacing); length(xdata)
ans = 20
errworst
errworst = 9.2109e-04
Постройте график результатов:
figure(3)
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Использовать nptsmax с четным интервалом
Создайте таблицу подстановки, которая имеет равномерно расположенные точки останова и минимизирует наихудшую ошибку для указанного максимального количества точек.
spacing = 'even'; [xdata, ydata, errworst] = fixpt_look1_func_approx(funcstr, ... xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax,spacing); length(xdata)
ans = 21
errworst
errworst = 8.3793e-04
Результат требует 21 равномерно разнесенной точки для достижения максимальной абсолютной ошибки 2^-10.2209.
Постройте график результатов:
figure(4)
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Использовать errmax с мощностью двух интервалов
Создайте таблицу подстановки с двумя интервалами и указанной наихудшей ошибкой.
spacing = 'pow2'; [xdata, ydata, errworst] = ... fixpt_look1_func_approx(funcstr,xmin, ... xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[],spacing); length(xdata)
ans = 33
Точки 33 необходимы для достижения наихудшей ошибки, указанной в errmax. Чтобы убедиться, что эти точки равномерно расположены, введите
widths = diff(xdata)
widths = 32×1
0.0078
0.0078
0.0078
0.0078
0.0078
0.0078
0.0078
0.0078
0.0078
0.0078
⋮
Это создает вектор, записи которого являются разностями между последовательными точками в xdata. Каждая запись widths является 2^-7.
Максимальная ошибка:
errworst
errworst = 3.7209e-04
Это меньше значения errmax.
Постройте график результатов:
figure(5)
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Использовать nptsmax с мощностью двух интервалов
Создайте таблицу подстановки с двумя интервалами и сведите к минимуму наихудшую ошибку для указанного числа точек.
spacing = 'pow2'; [xdata, ydata, errworst] = ... fixpt_look1_func_approx(funcstr,xmin, ... xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax,spacing); length(xdata)
ans = 17
errworst
errworst = 0.0013
Результат требует 17 баллов для достижения максимальной абсолютной ошибки 2^-9.6267.
Постройте график результатов:
figure(6)
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Если включить оба errmax и nptsmax параметры, функция fixpt_look1_func_approx пытается найти таблицу подстановки максимум с nptsmax точки данных, наихудшая ошибка которых не более errmax. Если можно найти таблицу подстановки, удовлетворяющую обоим условиям, для интервала используется следующий порядок приоритета:
Мощность двух
Даже
Неограниченный
Если функция не может найти таблицу подстановки, удовлетворяющую обоим условиям, она игнорирует nptsmax и возвращает таблицу поиска с неограниченным интервалом, наихудшая ошибка которого не более errmax. В этом случае функция ведет себя так же, как если бы nptsmax опущены.
Следующие примеры иллюстрируют результаты использования различных значений для nptsmax при вводе
[xdata ydata errworst] = fixpt_look1_func_approx(funcstr, ... xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,nptsmax);
Результаты для трех различных настроек для nptsmax являются следующими:
nptsmax = 33; - Функция создает таблицу поиска с 33 точками, имеющими степень двух интервалов, как в примере 3.
nptsmax = 21; - Потому что errmax и nptsmax условия не могут быть выполнены с мощностью двух интервалов, функция создает таблицу поиска с 20 точками, имеющими четный интервал, как в примере 5.
nptsmax = 16; - Потому что errmax и nptsmax условия не могут быть выполнены ни с степенью двух, ни даже с интервалом, функция создает таблицу поиска с 16 точками, имеющими неограниченный интервал, как в примере 1.
В следующей таблице приведены результаты для примеров. При указании errmax, четный интервал требует больше точек данных, чем неограниченный, а мощность двух интервалов требует больше точек, чем четный интервал.
| Пример | Варианты | Интервал | Наихудшая ошибка | Количество точек в таблице |
|---|---|---|---|---|
1 |
|
|
| 16 |
2 |
|
|
| 21 |
3 |
|
|
| 20 |
4 |
|
|
| 21 |
5 |
|
|
| 33 |
6 |
|
|
| 17 |