FunctionApproximation.Problem class

Пакет: FunctionApproappation

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

Описание

The 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

Желаемые типы данных входов в аппроксимированную функцию, заданные как 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

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

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

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

Методы

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

Копировать семантику

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

Создайте 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]

The 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