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

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

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

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

x3

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

x4

Входное значение запроса вдоль четвертого направления в виде скаляра или как одномерный массив одного размера с x1. Его модули должны быть соразмерными с модулями 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 значение аргумента

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

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

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

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

Следующие правила применяются к наборам данных 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