tablelookup

Возвращаемое значение на основе интерполяции набора точек данных

Синтаксис

tablelookup(x1d, x2d, x3d, x4d, fd, x1, x2, x3, x4, interpolation = linear|smooth, extrapolation = linear|nearest|error)

Описание

Используйте tablelookup функция в equations раздел для вычисления значения выхода путем интерполяции значения входа запроса с набором точек данных. Эта функциональность аналогична функциональности Simulink® и Simscape™ блоки Интерполяционной таблицы. Это позволяет вам включать табличное моделирование непосредственно в свой пользовательский блок, без необходимости подключения внешнего блока Интерполяционной таблицы к вашей модели.

The tablelookup функция поддерживает одномерные, двумерные, трехмерные и четырехмерные интерполяционные таблицы. Полный синтаксис:

tablelookup(x1d, x2d, x3d, x4d, fd, x1, x2, x3, x4, interpolation = linear|smooth, extrapolation = linear|nearest|error)

x1d

Набор данных входа значений по первому направлению, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Это обязательный аргумент.

x2d

Набор данных входа значений во втором направлении, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Этот аргумент используется только для двумерного и трехмерного поиска в таблице.

x3d

Набор данных входа значений по третьему направлению, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Этот аргумент используется только для трехмерного поиска в таблице.

x4d

Набор данных входа значений четвертого направления, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Этот аргумент используется только для трехмерного поиска в таблице.

fd

Набор данных выхода значений для поиска таблицы. Это обязательный аргумент.

Для одномерного поиска таблицы, fd должен быть одномерным массивом того же размера, что и x1d.

Для двумерного поиска таблицы, fd должен быть двумерным массивом, размер которого совпадает с размерностями, заданными наборами входных данных. Для примера, если x1d является 1-байт- m массив, и x2d является 1-байт- n массив, затем fd должен быть m-by- n матрица.

Для трехмерного поиска таблицы, fd должен быть трехмерным массивом с размером, соответствующим размерностям, заданным наборами входных данных. Для примера, если x1d является 1-байт- m массив, x2d является 1-байт- n массив, и x3d является 1-байт- p массив, затем fd должен быть m-by- n-by- p массив.

Для четырехмерного поиска таблицы, fd должен быть четырехмерным массивом с размером, соответствующим размерностям, заданным наборами входных данных. Для примера, если x1d является 1-байт- m массив, x2d является 1-байт- n массив, x3d является 1-байт- p массив, и x4d является 1-байт- q массив, затем fd должен быть m-by- n-by- p-by- q массив.

x1

Входное значение запроса по первому направлению, заданное как скаляр или как одномерный массив. Его модули должны быть соразмерны модулям x1d. Это обязательный аргумент.

x2

Входное значение запроса во втором направлении, заданное как скаляр или как одномерный массив того же размера, что и x1. Его модули должны быть соразмерны модулям x2d. Этот аргумент используется только для двумерного и трехмерного поиска в таблице.

x3

Входное значение запроса вдоль третьего направления, заданное как скаляр или как одномерный массив того же размера, что и x1. Его модули должны быть соразмерны модулям x3d. Этот аргумент используется только для трехмерного поиска в таблице.

x4

Входное значение запроса в четвертом направлении, заданное как скаляр или как одномерный массив того же размера, что и x1. Его модули должны быть соразмерны модулям x4d. Этот аргумент используется только для четырехмерного поиска в таблице.

interpolation = linear|smooth

Необязательный аргумент, который задает метод приближения для вычисления значения выхода, когда значение входа находится внутри области значений, заданной в интерполяционной таблице. Значение по умолчанию является interpolation = linear.

extrapolation = linear|nearest|error

Необязательный аргумент, который задает метод приближения для вычисления значения выхода, когда значение входа находится вне области значений, заданной в интерполяционной таблице. Значение по умолчанию является extrapolation = linear.

The interpolation значения аргументов:

  • linear - Для одномерного поиска таблицы использует линейную функцию. Для двумерного и трехмерного поиска в таблице использует расширение линейного алгоритма для многомерной интерполяции, путем выполнения линейной интерполяции в первом направлении, затем во втором направлении, а затем в третьем направлении. Используйте этот метод, чтобы получить лучшую эффективность.

  • smooth - Использует измененный алгоритм Akima. Для получения дополнительной информации см. makima. Используйте этот метод для создания непрерывной кривой или поверхности с непрерывными производными первого порядка.

The extrapolation значения аргументов:

  • linear- Простирается от ребра области интерполяции линейно. Наклон линейной экстраполяции равен наклону интерполированной кривой или поверхности на краю области интерполяции. Используйте этот метод для создания кривой или поверхности с непрерывным значением и непрерывными производными первого порядка на контуре между областью интерполяции и областью экстраполяции.

  • nearest - Простирается от ребра области интерполяции как константа. Значение ближайшей экстраполяции равно значению интерполированной кривой или поверхности на краю области интерполяции. Используйте этот метод, чтобы создать кривую или поверхность с непрерывным значением на контуре между областью интерполяции и областью экстраполяции, которая не идет выше высшей точки в данных или ниже самой нижней точки в данных.

  • error - Генерирует ошибку, когда входное значение находится вне диапазона, заданного в интерполяционной таблице.

Функция возвращает выходу значение в модулях, заданной для fd, путем просмотра или оценки значений таблицы на основе входа значений:

Когда вводит x1, x2, x3, и x4...The tablelookup функция...
Совпадайте со значениями в наборах входных данных, x1d, x2d, x3d, и x4dВыводит соответствующее значение таблицы fd
Не совпадайте со значениями во входных наборах данных, но находятся в области значенийИнтерполирует соответствующие значения таблицы, используя метод, заданный как interpolation значение аргумента
Не совпадайте со значениями во входных наборах данных и находятся вне области значенийЭкстраполирует значение выхода, используя метод, заданный как extrapolation значение аргумента

Если входные значения запроса x1, x2, x3, и x4 являются:

  • Скаляр, тогда функция возвращает скаляр.

  • Одномерные массивы, затем функция возвращает одномерный массив того же размера.

Проверка ошибок

Следующие правила применяются к наборам данных x1d, x2d, x3d, x4d, и fd:

  • Для одномерного поиска таблицы, x1d и fd должны быть одномерными массивами того же размера.

  • Для двумерного поиска таблицы, x1d и x2d должны быть одномерными массивами и fd должна быть матрицей, размер которой совпадает с размерностями, заданными наборами входных данных. Для примера, если x1d является 1-байт- m массив, и x2d является 1-байт- n массив, затем fd должен быть m-by- n матрица.

  • Для трехмерного поиска таблицы, x1d, x2d, и x3d должны быть одномерными массивами и fd должен быть трехмерным массивом с размером, соответствующим размерностям, заданным наборами входных данных. Для примера, если x1d является 1-байт- m массив, x2d является 1-байт- n массив, и x3d является 1-байт- p массив, затем fd должен быть m-by- n-by- p массив.

  • Для четырехмерного поиска таблицы, x1d, x2d, x3d, и x4d должны быть одномерными массивами и fd должен быть четырехмерным массивом с размером, соответствующим размерностям, заданным наборами входных данных. Для примера, если x1d является 1-байт- m массив, x2d является 1-байт- n массив, x3d является 1-байт- p массив, и x4d является 1-байт- q массив, затем fd должен быть m-by- n-by- p-by- q массив.

  • The x1d, x2d, x3d, и x4d значения должны быть строго монотонными, увеличиваться или уменьшаться.

  • Для сплайна-интерполяции каждый набор данных входа значений должен содержать как минимум три значения. Для линейной интерполяции достаточно двух значений.

Использование перечислений для опций интерполяции и экстраполяции

Библиотека Foundation включает встроенные перечисления, interpolation.m и extrapolation.m:

classdef interpolation < int32
   enumeration
       linear (1)
       smooth (2)
   end
   methods(Static)
    function map = displayText()
      map = containers.Map;
      map('linear') = 'Linear';
      map('smooth') = 'Smooth';
    end
  end
end
classdef extrapolation < int32
   enumeration
       linear (1)
       nearest (2)
       error (3)
   end
   methods(Static)
    function map = displayText()
      map = containers.Map;
      map('linear') = 'Linear';
      map('nearest') = 'Nearest';
      map('error') = 'Error';
    end
  end
end

Эти перечисления находятся в директории matlabroot\toolbox\physmod\simscape\library\m\+simscape\+enum.

Можно использовать эти перечисления, чтобы объявить параметры компонента, а затем использовать эти параметры как tablelookup аргументы функции. Для получения дополнительной информации смотрите Пользовательские методы интерполяции и экстраполяции и Использование перечисления в аргументах функции.

Примеры

1D интерполяционную таблицу Реализации

Этот пример реализует одномерную интерполяционную таблицу с линейной интерполяцией и экстраполяцией.

component tlu_1d_linear
 inputs
   u = 0;
 end
 outputs
   y = 0;
 end
 parameters (Size=variable)
   xd = [1 2 3 4];
   yd = [1 2 3 4];
 end
 equations
   y == tablelookup(xd, yd, u);
 end
end

xd и yd объявлены как параметры переменного размера. Это позволяет пользователям блоков предоставлять свои собственные наборы данных при преобразовании компонента в пользовательский блок. Для получения дополнительной информации см. Использование интерполяционных таблиц в уравнениях.

The xd значения должны быть строго монотонными, увеличиваться или уменьшаться. yd должен иметь тот же размер, что и xd.

2D интерполяционную таблицу Реализации

В этом примере реализуется двумерная интерполяционная таблица с определенными методами интерполяции и экстраполяции.

component tlu_2d
 inputs
   u1 = 0;
   u2 = 0;
 end
 outputs
   f = 0;
 end
 parameters (Size=variable)
   x1d = [1 2 3 4];
   x2d = [1 2 3];
   fd = [1 2 3; 3 4 5; 5 6 7; 7 8 9];
 end
 equations
   f == tablelookup(x1d, x2d, fd, u1, u2, interpolation=smooth, extrapolation=nearest);
 end
end

x1d, x2d, и fd объявлены как параметры переменного размера. The x1d и x2d векторные значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Для сплайна-интерполяции каждый вектор должен иметь как минимум три значения. Размер fd матрица должна совпадать с размерностями x1d и x2d векторы.

Интерполяция использует модифицированный алгоритм Akima, makima. В экстраполяции используется самое близкое значение fd для вне области допустимого u1 и u2 значения.

Пользовательские методы интерполяции и экстраполяции

Этот пример похож на предыдущий, но он дает пользователю блока контроль над методами интерполяции и экстраполяции.

import simscape.enum.*
component tlu_2d_enum
 inputs
   u1 = 0;
   u2 = 0;
 end
 outputs
   f = 0;
 end
 parameters (Size=variable)
   x1d = [1 2 3 4];
   x2d = [1 2 3];
   fd = [1 2 3; 3 4 5; 5 6 7; 7 8 9];
 end
 parameters
   interp = interpolation.linear; % Interpolation method
   extrap = extrapolation.linear; % Extrapolation method
 end
 equations
   f == tablelookup(x1d, x2d, fd, u1, u2, interpolation=interp, extrapolation=extrap);
 end
end

Компонент импортирует встроенные перечисления, а затем использует их, чтобы объявить два дополнительных параметра: interp (Interpolation method) и extrap (<reservedrangesplaceholder1>). The tablelookup функция использует эти параметры в качестве аргументов, чтобы задать методы интерполяции и экстраполяции. Для получения дополнительной информации см. Использование перечисления в аргументах функции.

Блок, сгенерированный из этого компонента, будет иметь Interpolation method и Extrapolation method параметры, оба со значением по умолчанию Linear. Пользователь блока может выбрать любые другие опции интерполяции и экстраполяции.

Использование интерполяционной таблицы с модулями

Этот пример реализует одномерную интерполяционную таблицу с модулями, чтобы сопоставить температуру с давлением с линейной интерполяцией и экстраполяцией.

component TtoP
 inputs
   u = {0, 'K'}; % temperature
 end
 outputs
   y = {0, 'Pa'}; % pressure
 end
 parameters (Size=variable)
   xd = {[100 200 300 400] 'K'};
   yd = {[1e5 2e5 3e5 4e5] 'Pa'};
 end
 equations
   y == tablelookup(xd, yd, u);
 end
end

xd и yd объявлены как параметры переменного размера с модулями. Это позволяет пользователям блоков предоставлять свои собственные наборы данных при преобразовании компонента в пользовательский блок, а также выбирать соразмерные модули из выпадающих списков в диалоговом окне пользовательских блоков. Для получения дополнительной информации см. Использование интерполяционных таблиц в уравнениях.

The xd значения должны быть строго монотонными, увеличиваться или уменьшаться. yd должен иметь тот же размер, что и xd.

Введенный в R2012a