Разделы, которые следуют, объясняют, как использовать функцию fixpt_look1_func_approx
создать интерполяционные таблицы. Это дает примеры, которые показывают, как создать интерполяционные таблицы для функции sin (2πx) на интервале от 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 |
|
| 2^-10 | 16 |
2 |
|
| 2^-10.933 | 21 |
3 |
|
| 2^-10.0844 | 20 |
4 |
|
| 2^-10.2209 | 21 |
5 |
|
| 2^-11.3921 | 33 |
6 |
|
| 2^-9.627 | 17 |