FunctionApproximation.Problem class

Пакет: Функциональная аппроксимация

Объект, задающий функцию, чтобы аппроксимировать, или интерполяционная таблица, чтобы оптимизировать

Описание

FunctionApproximation.Problem объект задает функцию, чтобы аппроксимировать интерполяционной таблицей или блоком интерполяционной таблицы, чтобы оптимизировать. После описывания задачи используйте solve метод, чтобы сгенерировать FunctionApproximation.LUTSolution объект, который содержит приближение.

Конструкция

approximationProblem = FunctionApproximation.Problem() создает FunctionApproximation.Problem объект со значениями свойств по умолчанию. Когда никакой function вход обеспечивается, FunctionToApproximate свойство установлено в 'sin'.

approximationProblem = FunctionApproximation.Problem(function) создает FunctionApproximation.Problem возразите, чтобы аппроксимировать функцию, блок Math Function или интерполяционную таблицу, заданную function.

Входные параметры

развернуть все

Функция или блок, чтобы аппроксимировать, или интерполяционная таблица блокируются, чтобы оптимизировать в виде указателя на функцию, математической функции, блока Simulink® или подсистемы или одного из блоков интерполяционной таблицы (например, 1-D Lookup Table, n-D Lookup Table).

Если вы задаете один из блоков интерполяционной таблицы, solve метод генерирует оптимизированную интерполяционную таблицу.

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

Указатели на функцию должны быть на пути поиска файлов MATLAB® или сбоях приближения.

Математические функции MATLAB, поддержанные для приближения:

  • 1./x

  • 10.^x

  • 2.^x

  • acos

  • acosh

  • asin

  • asinh

  • atan

  • atan2

  • atanh

  • cos

  • cosh

  • exp

  • log

  • log10

  • log2

  • sin

  • sinh

  • sqrt

  • tan

  • tanh

  • x.^2

Совет

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

Типы данных: char | function_handle

Свойства

развернуть все

Функция или блок, чтобы аппроксимировать, или интерполяционная таблица блокируются, чтобы оптимизировать в виде указателя на функцию, математической функции, блока Simulink или подсистемы или одного из блоков интерполяционной таблицы (например, 1-D Lookup Table, n-D Lookup Table).

Если вы задаете один из блоков интерполяционной таблицы, solve метод генерирует оптимизированную интерполяционную таблицу.

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

Указатели на функцию должны быть на пути поиска файлов MATLAB или сбоях приближения.

Математические функции MATLAB, поддержанные для приближения:

  • 1./x

  • 10.^x

  • 2.^x

  • acos

  • acosh

  • asin

  • asinh

  • atan

  • atan2

  • atanh

  • cos

  • cosh

  • exp

  • log

  • log10

  • log2

  • sin

  • sinh

  • sqrt

  • tan

  • tanh

  • x.^2

Совет

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

Типы данных: char | function_handle

Количество входных параметров к аппроксимированной функции. Это свойство выведено из FunctionToApproximate свойство, поэтому это не перезаписываемое свойство.

Если вы генерируете Direct Lookup Table, функция, чтобы аппроксимировать может иметь не больше, чем два входных параметров.

Типы данных: double

Желаемые типы данных входных параметров к аппроксимированной функции в виде a numerictype, Simulink.Numerictype, или вектор из numerictype или Simulink.Numerictype объекты. Количество InputTypes заданный должен совпадать с NumberOfInputs.

Пример: problem.InputTypes = ["numerictype(1,16,13)", "numerictype(1,16,10)"];

Нижний предел области значений входных параметров, чтобы функционировать, чтобы аппроксимировать в виде скаляра или вектора. Если вы задаете inf, InputLowerBounds используемый во время приближения выведен из InputTypes свойство. Размерности InputLowerBounds должен совпадать с NumberOfInputs.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Верхний предел области значений входных параметров, чтобы функционировать, чтобы аппроксимировать в виде скаляра или вектора. Если вы задаете inf, InputUpperBounds используемый во время приближения выведен из InputTypes свойство. Размерности InputUpperBounds должен совпадать с NumberOfInputs.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Желаемый тип данных приближения функций выводится в виде a numerictype или Simulink.Numerictype. Например, чтобы указать, что вы хотите, чтобы выход был типом данных с фиксированной точкой со знаком с 16-битным размером слова и длиной части лучшей точности, установите OutputType свойство к "numerictype(1,16)".

Пример: problem.OutputType = "numerictype(1,16)";

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

Методы

решитьРешите для оптимизированного решения проблемы приближения функций

Примеры

свернуть все

Создайте FunctionApproximation.Problem объект, задавая указатель на функцию, который вы хотите аппроксимировать.

problem = FunctionApproximation.Problem(@(x,y) sin(x)+cos(y))
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: @(x,y)sin(x)+cos(y)
           NumberOfInputs: 2
               InputTypes: ["numerictype('double')"    "numerictype('double')"]
         InputLowerBounds: [-Inf -Inf]
         InputUpperBounds: [Inf Inf]
               OutputType: "numerictype('double')"
                  Options: [1×1 FunctionApproximation.Options]

FunctionApproximation.Problem объект, problem, значения свойств значения по умолчанию использования.

Установите область значений входных параметров функции быть между нулем и 2*pi.

problem.InputLowerBounds = [0,0];
problem.InputUpperBounds = [2*pi, 2*pi]
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: @(x,y)sin(x)+cos(y)
           NumberOfInputs: 2
               InputTypes: ["numerictype('double')"    "numerictype('double')"]
         InputLowerBounds: [0 0]
         InputUpperBounds: [6.2832 6.2832]
               OutputType: "numerictype('double')"
                  Options: [1×1 FunctionApproximation.Options]

Создайте FunctionApproximation.Problem объект, задавая математическую функцию, чтобы аппроксимировать.

problem = FunctionApproximation.Problem('log')
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: @(x)log(x)
           NumberOfInputs: 1
               InputTypes: "numerictype(1,16,10)"
         InputLowerBounds: 0.6250
         InputUpperBounds: 15.6250
               OutputType: "numerictype(1,16,13)"
                  Options: [1×1 FunctionApproximation.Options]

Математические функции имеют соответствующий входной диапазон, тип входных данных, и выходные данные вводят значения по умолчанию свойства.

Создайте FunctionApproximation.Problem объект оптимизировать существующую интерполяционную таблицу.

load_system('sldemo_fuelsys');
problem = FunctionApproximation.Problem('sldemo_fuelsys/fuel_rate_control/airflow_calc/Pumping Constant')
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: 'sldemo_fuelsys/fuel_rate_control/airflow_calc/Pumping Constant'
           NumberOfInputs: 2
               InputTypes: ["numerictype('single')"    "numerictype('single')"]
         InputLowerBounds: [50 0.0500]
         InputUpperBounds: [1000 0.9500]
               OutputType: "numerictype('single')"
                  Options: [1×1 FunctionApproximation.Options]

Программное обеспечение выводит свойства problem объект из модели.

Ограничения

  • Объекты интерполяционной таблицы и объекты точки останова не поддерживаются в рабочей области маски модели.

Алгоритмы

развернуть все

Введенный в R2018a