tablelookup

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

Синтаксис

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

Описание

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

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

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

x1d

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

x2d

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

x3d

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

x4d

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

fd

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

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

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

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

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

x1

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

x2

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

x3

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

x4

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

interpolation = linear|smooth

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

extrapolation = linear|nearest|error

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Для четырехмерного поиска по таблице, x1d, x2d, x3d, и x4d должны быть одномерные массивы и fd должен быть четырехмерный массив, с размером, совпадающим с размерностями, заданными наборами входных данных. Например, если x1d 1 m массив, x2d 1 n массив, x3d 1 p массив и x4d 1 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 (Interpolation method) и extrap ExtrapolationMethod . 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 объявляются как параметры переменного размера с модулями. Это позволяет пользователям блока обеспечить свои собственные наборы данных, когда компонент преобразован в пользовательский блок, и также выбрать соразмерные модули из раскрытия в диалоговом окне пользовательского блока. Для получения дополнительной информации смотрите Используя Интерполяционные таблицы в уравнениях.

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

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