exponenta event banner

Класс FuncureApproximation.Problem

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

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

Описание

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

Строительство

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

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

Входные аргументы

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

Функция или блок, чтобы приблизиться, или справочная таблица блокируют, чтобы оптимизировать, определенный как ручка функции, математическая функция, блок Simulink® или подсистема или один из блоков справочной таблицы (например, 1-D Справочная таблица, 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

Совет

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

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

Свойства

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

Функция или блок, чтобы приблизиться, или справочная таблица блокируют, чтобы оптимизировать, определенный как ручка функции, математическая функция, блок Simulink или подсистема или один из блоков справочной таблицы (например, 1-D Справочная таблица, 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

Совет

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

Типы данных: 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 объект.

Методы

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

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

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Создать 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