FunctionApproximation. Проблемный класс

Пакет: FunctionApproximation

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

Описание

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

Конструкция

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

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

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

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

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

Если вы задаете один из блоков интерполяционной таблицы, метод 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

Примечание

Функции и указатели на функцию, которые вы аппроксимируете, должны быть векторизованы, означая что для каждого входа, существует точно один вывод. Для получения дополнительной информации смотрите Векторизацию (MATLAB).

Совет

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

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

Свойства

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

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

Если вы задаете один из блоков интерполяционной таблицы, метод 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

Примечание

Функции и указатели на функцию, которые вы аппроксимируете, должны быть векторизованы, означая что для каждого входа, существует точно один вывод. Для получения дополнительной информации смотрите Векторизацию (MATLAB).

Совет

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

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

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

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

Типы данных: 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 влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

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