exponenta event banner

tablelookup

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

Синтаксис

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

Описание

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

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-by-m массив, и x2d является 1-by-n массив, затем fd должно быть mоколо-n матрица.

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

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

x1

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

x2

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

x3

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

x4

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

interpolation = linear|smooth

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

extrapolation = linear|nearest|error

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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 объявляются как параметры переменного размера. Это позволяет пользователям блоков предоставлять собственные наборы данных при преобразовании компонента в пользовательский блок. Дополнительные сведения см. в разделе Использование таблиц подстановки в уравнениях.

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

Интерполяция использует модифицированный алгоритм Акимы, 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 (метод интерполяции) и extrap (Метод экстраполяции). tablelookup функция использует эти параметры в качестве аргументов для определения методов интерполяции и экстраполяции. Дополнительные сведения см. в разделе Использование перечисления в аргументах функции.

Блок, созданный из этого компонента, будет иметь параметры метода интерполяции и метода экстраполяции, оба со значением по умолчанию 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 объявляются как параметры переменного размера с единицами измерения. Это позволяет пользователям блоков предоставлять собственные наборы данных при преобразовании компонента в пользовательский блок, а также выбирать соответствующие единицы измерения из раскрывающихся списков в диалоговом окне пользовательского блока. Дополнительные сведения см. в разделе Использование таблиц подстановки в уравнениях.

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

Представлен в R2012a