Следующие ограничения применяются к размерам наборов данных точек по оси Х и данных таблицы, сопоставленных с блоками интерполяционной таблицы:
Ограничения памяти вашей системы ограничивают общий размер интерполяционной таблицы.
В интерполяционных таблицах должны использоваться непротиворечивые размерности, чтобы общий размер данных таблицы отражал размер каждого набора данных точек по оси Х.
Чтобы проиллюстрировать второе ограничение, рассмотрите следующие векторы входа и выходных значений, которые создают связь на графике.
Vector of input values: [-3 -2 -1 0 1 2 3] Vector of output values: [-3 -1 0 -1 0 1 3]
В этом примере входные и выходные данные имеют одинаковый размер (1 на 7), что делает данные последовательно измеренными для 1-D интерполяционной таблицы.
Следующие входы и выход значения определяют двумерную интерполяционную таблицу, которая показана графически.
Row index input values: [1 2 3] Column index input values: [1 2 3 4] Table data: [11 12 13 14; 21 22 23 24; 31 32 33 34]
В этом примере размеры векторов, представляющих индексы строка и столбец, равны 1 на 3 и 1 на 4, соответственно. Следовательно, таблица выхода должна иметь размер 3 на 4 для допустимых размеров.
Первый этап операции поиска таблицы включает в себя связывание входов с наборами данных точек по оси Х. Алгоритм поиска требует, чтобы входные наборы точек по оси Х были strictly monotonically increasing, то есть каждый последующий элемент был больше, чем его предыдущий элемент. Для примера, вектор
A = [0 0.5 1 1.9 2.1 3]
является допустимым набором данных точек по оси Х, поскольку каждый элемент больше, чем его предшественники.
Примечание
Хотя набор данных точек по оси Х строго монотонен в double
формат может быть не таким после преобразования в тип данных с фиксированной точкой.
Вы можете представлять равномерно разнесенные точки по оси Х в наборе данных с помощью одного из следующих методов.
Формулировка | Пример | Когда использовать эту формулировку |
---|---|---|
[first_value:spacing:last_value] | [10:10:200] | Интерполяционная таблица не использует double или single . |
first_value + spacing * [0:(last_value-first_value)/spacing] | 1 + (0.02 * [0:450]) | Интерполяционная таблица использует double или single . |
Поскольку типы данных с плавающей точкой не могут точно представлять некоторые числа, вторая формулировка работает лучше для double
и single
. Для примера используйте 1 + (0.02 * [0:450])
вместо [1:0.02:10]
. Список блоков интерполяционной таблицы, поддерживающих равномерно расположенные точки по оси Х, см. в Сводных данных функций блоков интерполяционной таблицы.
Среди других преимуществ равномерно расположенные точки останова могут сделать сгенерированный код свободным от деления и уменьшить использование памяти. Для получения дополнительной информации смотрите:
fixpt_evenspace_cleanup
в Simulink® документация
Эффекты интервалов на скорость, ошибку и использование памяти (Fixed-Point Designer)
Идентифицируйте сомнительные операции с фиксированной точкой (Embedded Coder)
Совет
Не используйте MATLAB®
linspace
функция для определения равномерно разнесенных точек по оси Х. Simulink использует более жесткий допуск, чтобы проверить, имеет ли набор точек по оси Х четные интервалы. Если вы используете linspace
чтобы задать точки по оси Х для интерполяционной таблицы, Simulink считает точки по оси Х неравномерными.