idgrey

Линейное ОДУ (модель серого ящика) идентифицируемыми параметрами

Описание

idgrey модель представляет линейную систему как модель в пространстве состояний непрерывного времени или дискретного времени с идентифицируемыми (допускающими оценку) коэффициентами. Используйте idgrey модель, когда это необходимо, чтобы получить комплексные отношения, ограничения и предварительные знания, которые структурировали пространство состояний (idss) модели не могут инкапсулировать. Создать idgrey модель, необходимо знать явным образом систему уравнений (обыкновенные дифференциальные уравнения или разностные уравнения), которые управляют системной динамикой.

idgrey модель позволяет вам включать условия, такие как следующее:

  • Ограничения параметра, что idss/ssest среда не может обработать, такие как линейные или ограничения равенства на параметры или предварительные знания об отклонении состояний, входных параметров, выходных параметров или любой комбинации этих трех, которые вы хотите включать как известную информацию

  • Линейная модель произвольной формы, такой как передаточная функция или полиномиальная модель, с ограничениями параметра, такими как известное усиление DC, ограничивает на местоположениях полюса, разделяемом знаменателе через несколько входных параметров или ненулевых задержках ввода/вывода моделей MIMO

  • Дифференциальные или разностные уравнения с известными и неизвестными коэффициентами

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

Простой пример создания ОДУ для idgrey использует следующие уравнения, чтобы описать моторную динамику.

x˙(t)=[0101τ]x(t)+[0Gτ]u(t)y(t)=[1001]x(t)

В этих уравнениях τ является одним допускающим оценку параметром, и G представляет известное статическое усиление.

Эти уравнения соответствуют форме пространства состояний:

x˙(t)=Ax(t)+Bu(t)y(t)=Cx(t)

Для этого случая и A и матрицы B содержат допускающий оценку параметр τ, и B также включает известное усиление G. Можно записать функцию MATLAB, которая принимает τ и G как входные параметры и возвращает матрицы пространства состояний A, B и C как его выходные аргументы. Например, можно закодировать функциональный motorFcn можно следующим образом.

function [A,B,C] = motorFcn(tau,G)
% ODE function for computing state-space matrices as functions of parameters
A = [0 1; 0 -1/tau];
B = [0; G/tau];
C = eye(2);

После создания функции, такой как motorFcn, создайте idgrey модель путем определения этой функции как значения ее odefun входной параметр, когда следующая команда показывает.

sys = idgrey(@motorFcn,tau0,'c',G)
Здесь, tau0 исходное предположение для параметра τ и G задает фиксированную постоянную. Кроме того, 'c' указывает к idgrey тот odefun возвращает матрицы, соответствующие системе непрерывного времени. Для получения дополнительной информации смотрите function_type.

Для исполняемого примера, который создает idgrey модель от этих моторных уравнений динамики, смотрите, Создают Модель Серого ящика Допускающими оценку Параметрами.

В более общем плане следующие уравнения описывают формы пространства состояний для систем непрерывного времени и дискретного времени.

Модель в пространстве состояний системы с входным вектором u, выходной вектор y и воздействие e, принимает следующую форму в непрерывное время:

x˙(t)=Ax(t)+Bu(t)+Ke(t)y(t)=Cx(t)+Du(t)+e(t)x(0)=x0

В дискретное время модель в пространстве состояний принимает форму:

x[k+1]=Ax[k]+Bu[k]+Ke[k]y[k]=Cx[k]+Du[k]+e[k]x[1]=x0

Ваша функция ОДУ MATLAB включает пользовательские параметры в A, B, C и матрицы D, которые возвращает функция. Связанный idgrey модели - ссылки эта функция и функции оценки greyest и pem используйте эти матричные определения при оценке параметров.

Для получения дополнительной информации о создании ОДУ функционируют для idgrey, смотрите Оценку Линейные Модели Серого ящика.

Создание

Создайте idgrey модель с помощью idgrey команда. Для этого запишите функцию MATLAB, которая возвращает A, B, C и матрицы D для данных значений допускающих оценку параметров и шага расчета. Можно передать дополнительные входные параметры, такие как постоянная времени или усиление, которые не являются параметрами, но что ОДУ использует в выражениях для выходных аргументов.

В дополнение к A, B, C и матрицам D, ваша функция MATLAB может возвратить матрицу K, если вы хотите, чтобы значения K были функциями ваших входных параметров. Ваша функция может также возвратить вектор начального состояния x0. Однако альтернативный и рекомендуемый подход для параметризации x0 должен использовать InitialState опция оценки greyestOptions.

Обратите внимание на то, что можно записать функцию ОДУ, чтобы представлять или непрерывную динамику времени или динамику дискретного времени независимо от природы idgrey сама модель. Например, можно задать дискретное время idgrey модель (sys.Ts>0) это использует параметризацию непрерывного времени функции ОДУ. Точно так же можно задать параметризацию дискретного времени функции ОДУ и использовать ее с непрерывным временем idgrey модель (sys.Ts=0). idgrey входной параметр fcn_type сообщает idgrey модели, какая параметризация ОДУ функционирует использование. Для получения дополнительной информации смотрите Оценку Линейные Модели Серого ящика.

Используйте функции оценки pem или greyest получить ориентировочные стоимости для неизвестных параметров idgrey модель. В отличие от другой оценки функционирует такой как ssest, который может создать новый объект модели, greyest может оценить параметры только для idgrey модель, которая уже существует и задана как входной параметр. Можно получить доступ к оцененным параметрам с помощью sys.Structures.Parameters, где sys idgrey модель.

Можно преобразовать idgrey модель в другие динамические системы, такой как idpoly, idss, tf, или ss. Вы не можете преобразовать динамическую систему в idgrey модель.

Описание

пример

sys = idgrey(odefun,parameters,fcn_type) создает линейную модель sys серого ящика идентифицируемыми параметрами. odefun задает пользовательскую функцию, которая связывает параметры модели parameters к их представлению пространства состояний. fcn_type задает, параметрируется ли модель в непрерывное время, дискретное время или обоих.

пример

sys = idgrey(odefun,parameters,fcn_type,extra_args) задает дополнительные аргументы extra_args тот odefun требует.

пример

sys = idgrey(odefun,parameters,fcn_type,extra_args,Ts) задает шаг расчета Ts.

пример

sys = idgrey(odefun,parameters,fcn_type,extra_args,Ts,Name,Value) включает дополнительные опции, заданные одними или несколькими аргументами name-value.

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

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

Функция MATLAB (.m.p, или .mex* файл), который связывает параметры модели parameters к их представлению пространства состояний в виде указателя на функцию или как символьный массив или строка, которая содержит имя функции. Как опция, odefun может также связать параметры модели с матрицей воздействия и начальными состояниями. Для получения информации о создании функции ОДУ смотрите Оценку Линейные Модели Серого ящика. Параметры, которые задает функция ОДУ, являются теми же параметрами, которые вы задаете в parameters входной параметр к idgrey.

Если odefun не находится на пути MATLAB, затем задайте полное имя файла, включая путь.

Если odefun не возвращает матрицу воздействия K и значения начального состояния x0, затем эти значения не являются допускающими оценку параметрами в idgrey объект. Вместо этого во время оценки программное обеспечение определяет эти значения с помощью DisturbanceModel и InitialState опции оценки, соответственно. Можно зафиксировать значение K, чтобы обнулить путем установки DisturbanceModel опция к 'none'. Выполнение так обычно обеспечивает лучшее соответствие между результатами симуляции и результатами измерений. Для получения дополнительной информации о значениях K, смотрите K. Для получения дополнительной информации об опциях оценки, смотрите greyestOptions.

idgrey модель хранит имя функции ОДУ или указатель в sys.Structures.Function свойство.

Для получения дополнительной информации о создании функции ОДУ смотрите Оценку Линейные Модели Серого ящика.

Начальные значения параметров требуются odefunВ виде массива ячеек или матрицы:

  • Если ваша модель требует нескольких параметров, parameters должен быть массив ячеек.

  • Если ваша модель требует только одного параметра, который самого может быть вектором или матрицей, parameters может быть матрица.

Можно также задать названия параметра с помощью N-by-2 массив ячеек, где N является количеством параметров. Первый столбец задает имена, и второй столбец задает значения параметров.

Например, следующая команда задает параметры под названием 'mass', 'stiffness', и 'damping'.

parameters = {'mass',par1;'stiffness',par2;'damping',par3}

Для примера конфигурирования параметров смотрите, Конфигурируют Допускающий оценку Параметр Модели Серого ящика.

idgrey модель хранит предполагаемые параметры в sys.Structures.Parameters свойство.

Функциональный тип, который указывает, параметрируется ли модель в непрерывное время, дискретное время или обоих в виде символьного массива или представляет в виде строки, который содержит одно из следующих значений:

  • 'c' odefun возвращает матрицы, соответствующие системе непрерывного времени, независимо от значения Ts.

  • 'd' odefun возвращает матрицы, соответствующие системе дискретного времени, значения которой могут или не могут зависеть от значения Ts.

  • 'cd' odefun возвращает матрицы, соответствующие системе непрерывного времени если Ts = 0 или система дискретного времени, если Ts > 0.

    Если Ts > 0, выберите 'cd' вместо 'd' когда это необходимо, программное обеспечение, чтобы произвести вашу модель с помощью значений, возвращенных odefun скорее с помощью внутренних подпрограмм преобразования шага расчета программного обеспечения.

Для примера установки этого аргумента смотрите, Создают Модель Серого ящика Допускающими оценку Параметрами.

idgrey модель хранит функциональный тип в sys.Structures.FunctionType свойство.

Дополнительные входные параметры, которые требуются odefunВ виде массива ячеек. Если odefun не требует дополнительных входных параметров, задает extra_args как {}.

Для примера использования этого аргумента смотрите, Создают Модель Серого ящика Допускающими оценку Параметрами.

Свойства

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

Это свойство доступно только для чтения.

Значения матриц пространства состояний, что функция ОДУ представлена odefun возвращается в виде следующего:

  • A — Матричный A состояния, Nx-by-Nx матрица, где Nx является количеством состояний.

  • B — Матричный B входа к состоянию, Nx-by-Nu матрица, где Nu является количеством входных параметров.

  • CC состояния к выходной матрице, Ny-by-Nx матрица, где Ny является количеством выходных параметров.

  • D — Проходной матричный D, Ny-by-Nu матрица.

Для примера этого свойства смотрите, Создают Модель Серого ящика Допускающими оценку Параметрами.

Значения матрицы воздействия состояния K в виде Nx-by-Ny матрица, где Nx является количеством состояний и Ny, являются количеством выходных параметров.

  • Если odefun параметрирует матрицу K, затем K возвратили значение odefunodefun параметрирует матрицу K, если она возвращает по крайней мере пять выходных параметров, и значение пятого выхода не содержит NaN значения.

  • Если odefun не параметрирует матрицу K, затем K нулевая матрица. Нулевое значение обработано как фиксированное значение матрицы K во время оценки. Чтобы сделать значение K допускающим оценку, используйте DisturbanceModel опция оценки.

  • Независимо от того, параметрируется ли матрица K odefun или нет, можно установить значения K свойство явным образом. Заданное значение обработано как фиксированное значение матрицы K во время оценки. Чтобы сделать значение допускающим оценку, используйте DisturbanceModel опция оценки.

Создать набор опции оценки для idgrey модели, использовать greyestOptions.

Имена состояния в виде одного из этих значений:

  • Вектор символов — Для моделей первого порядка

  • Массив ячеек из символьных векторов Модели For с двумя или больше состояниями

  • '' — Для состояний без имени

Можно задать StateName с помощью строки, такой как "velocity", но имя состояния хранится как вектор символов, 'velocity'.

Пример: 'velocity'

Пример: {'x1','x2'}

Модули состояния в виде одного из этих значений:

  • Вектор символов — Для моделей первого порядка

  • Массив ячеек из символьных векторов Модели For с двумя или больше состояниями

  • '' — Для состояний без заданных модулей

Используйте StateUnit чтобы отслеживать модули, каждое состояние описывается в. StateUnit не оказывает влияния на поведение системы.

Можно задать StateUnit с помощью строки, такой как "mph", но модули состояния хранятся как вектор символов, 'mph'.

Пример: 'mph'

Пример: {'rpm','rad/s'}

Информация о допускающих оценку параметрах idgrey модель в виде LinearODE структура.

  • Structure.Function — Имя или указатель на функцию функции MATLAB раньше создавали idgrey модель.

  • Structure.FunctionType — Указывает, параметрируется ли модель в непрерывное время, дискретное время или обоих.

  • Structure.Parameters — Информация о предполагаемых параметрах. Structure.Parameters содержит следующие поля:

    • Value — Значения параметров. Например, sys.Structure.Parameters(2).Value содержит начальные значения или ориентировочные стоимости второго параметра.

      NaN представляет неизвестные значения параметров.

    • Minimum — Минимальное значение, которое параметр может принять во время оценки. Например, sys.Structure.Parameters(1).Minimum = 0 ограничивает первый параметр быть больше или быть равным нулю.

    • Maximum — Максимальное значение, которое параметр может принять во время оценки.

    • Free — Булево значение, задающее, является ли параметр допускающим оценку. Если вы хотите зафиксировать значение параметра во время оценки, установите Free = false для соответствующей записи.

    • Scale — Шкала значения параметра. Scale не используется по оценке.

    • Info — Массив структур для хранения модулей параметра и меток. Структура имеет Label и Unit поля .

      Задайте модули параметра и метки как векторы символов. Например, 'Time'.

  • Structure.ExtraArguments — Дополнительные входные параметры функция ОДУ требуют.

  • Structure.StateName — Имена состояний модели.

  • Structure.StateUnit — Модули состояний модели.

Шумовое отклонение инноваций модели e в виде скаляра или ковариационной матрицы. Для моделей SISO, NoiseVariance скаляр. Для моделей MIMO, NoiseVariance Ny-by-Ny матрица, где Ny является количеством выходных параметров в системе.

Идентифицированная модель включает белый, Гауссов шумовой компонент, e (t). NoiseVariance отклонение этого шумового компонента. Как правило, функция оценки модели (такой как greyest или pem) определяет это отклонение.

Это свойство доступно только для чтения.

Сводный отчет, который содержит информацию об опциях оценки и результатах, когда модель серого ящика получена с помощью greyest команда оценки. Используйте Report чтобы запросить модель для того, как это было оценено, включая:

  • Метод оценки

  • Опции оценки

  • Поисковые условия завершения

  • Совпадение данных оценки и другие метрики качества

Содержимое Report не важны, если модель была создана конструкцией.

odefun = 'motorDynamics';
m = idgrey(odefun,1,'cd',0.25,0);
m.Report.OptionsUsed
ans =

     []

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

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata'));
data = iddata(y,u,0.1,'Name','DC-motor');
odefun = 'motorDynamics';
init_sys = idgrey('motorDynamics',1,'cd',0.25,0);
m = greyest(data,init_sys);
m.Report.OptionsUsed
InitialState: 'auto'
    DisturbanceModel: 'auto'
               Focus: 'prediction'
  EstimateCovariance: 1
             Display: 'off'
         InputOffset: []
        OutputOffset: []
      Regularization: [1x1 struct]
        OutputWeight: []
        SearchMethod: 'auto'
       SearchOptions: [1x1 idoptions.search.identsolver]
            Advanced: [1x1 struct]

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

Задержитесь в каждом входе в виде скаляра или вектора. Для системы с Nu входные параметры, набор InputDelay к Nu- 1 вектор. Каждая запись этого вектора является численным значением, которое представляет входную задержку соответствующего входного канала. Для моделей непрерывного времени задайте входные задержки единицы измерения времени, сохраненной в TimeUnit свойство объекта модели. Для моделей дискретного времени задайте входные задержки целочисленных множителей шага расчета Ts. Например, InputDelay = 3 означает задержку трех шагов расчета.

Установите InputDelay к скалярному значению, чтобы применить ту же задержку со всеми каналами.

Для идентифицированных систем как idgrey, OutputDelay фиксируется, чтобы обнулить.

Шаг расчета в виде одного из следующих.

  • Модель непрерывного времени — 0

  • Модель дискретного времени с заданным временем выборки — Положительная скалярная величина, представляющая период выборки, описанный в модуле, задана TimeUnit свойство модели

  • Модель дискретного времени с незаданным шагом расчета — -1

Для idgrey модели, Ts не имеет никакого уникального значения по умолчанию. Ts зависит от значения fcn_type.

Изменение этого свойства не дискретизирует или передискретизирует модель. Использование c2d и d2c преобразовывать между непрерывным - и представлениями дискретного времени. Использование d2d изменить шаг расчета системы дискретного времени.

Единицы измерения времени модели в виде одного из этих значений:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

Можно задать TimeUnit с помощью строки, такой как "hours", но единицы измерения времени хранятся как вектор символов, 'hours'.

Свойства модели, такие как шаг расчета Ts, InputDelay, OutputDelay, и другие задержки описываются в модулях, заданных TimeUnit. Изменение этого свойства не оказывает влияния на другие свойства, и поэтому изменяет полное поведение системы. Использование chgTimeUnit (Control System Toolbox), чтобы преобразовать между единицами измерения времени, не изменяя поведение системы.

Имена входа образовывают канал в виде одного из этих значений:

  • Вектор символов — Для моделей одно входа

  • Массив ячеек из символьных векторов Модели For с двумя или больше входными параметрами

  • '' — Для входных параметров без указанных имен

Можно использовать автоматическое векторное расширение, чтобы присвоить входные имена для мультивходных моделей. Например, если sys 2D входная модель, введите:

sys.InputName = 'controls';

Входные имена автоматически расширяются до {'controls(1)';'controls(2)'}.

Можно использовать краткое обозначение u относиться к InputName свойство. Например, sys.u эквивалентно sys.InputName.

Входные названия канала имеют несколько использования, включая:

  • Идентификация каналов на отображении модели и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек контакта, когда взаимосвязанные модели

Можно задать InputName с помощью строки, такой как "voltage", но входное имя хранится как вектор символов, 'voltage'.

Когда вы оцениваете модель с помощью iddata объект, data, программное обеспечение автоматически устанавливает InputName к data.InputName.

Модули входных сигналов в виде одного из этих значений:

  • Вектор символов — Для моделей одно входа

  • Массив ячеек из символьных векторов Модели For с двумя или больше входными параметрами

  • '' — Для входных параметров без заданных модулей

Используйте InputUnit чтобы отслеживать модули, каждый входной сигнал описывается в. InputUnit не оказывает влияния на поведение системы.

Можно задать InputUnit с помощью строки, такой как "voltage", но входные модули хранятся как вектор символов, 'voltage'.

Пример: 'voltage'

Пример: {'voltage','rpm'}

Введите группы канала в виде структуры, где поля являются названиями группы, и значения являются индексами входных каналов, принадлежащих соответствующей группе. Когда вы используете InputGroup чтобы присвоить входные каналы систем MIMO группам, можно обратиться к каждой группе по наименованию, когда необходимо получить доступ к ней. Например, предположите, что у вас есть модель sys с пятью входами, где первые три входных параметров являются входными параметрами управления, и остающиеся два входных параметров представляют шум. Присвойте управление и шумовые входные параметры sys разделить группы.

sys.InputGroup.controls = [1:3];
sys.InputGroup.noise = [4 5];

Используйте название группы, чтобы извлечь подсистему от входных параметров управления до всех выходных параметров.

sys(:,'controls')

Пример: struct('controls',[1:3],'noise',[4 5])

Имена выхода образовывают канал в виде одного из этих значений:

  • Вектор символов — Для моделей одно выхода

  • Массив ячеек из символьных векторов Модели For с двумя или больше выходными параметрами

  • '' — Для выходных параметров без указанных имен

Можно использовать автоматическое векторное расширение, чтобы присвоить выходные имена для мультивыходных моделей. Например, если sys 2D выходная модель, введите:

sys.OutputName = 'measurements';

Выходные имена автоматически расширяются до {'measurements(1)';'measurements(2)'}.

Можно использовать краткое обозначение y относиться к OutputName свойство. Например, sys.y эквивалентно sys.OutputName.

Выходные названия канала имеют несколько использования, включая:

  • Идентификация каналов на отображении модели и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек контакта, когда взаимосвязанные модели

Можно задать OutputName с помощью строки, такой как "rpm", но выходное имя хранится как вектор символов, 'rpm'.

Когда вы оцениваете модель с помощью iddata объект, data, программное обеспечение автоматически устанавливает OutputName к data.OutputName.

Единицы работ сигнализируют в виде одного из этих значений:

  • Вектор символов — Для моделей одно выхода

  • Массив ячеек из символьных векторов Модели For с двумя или больше выходными параметрами

  • '' — Для выходных параметров без заданных модулей

Используйте OutputUnit чтобы отслеживать модули, каждый выходной сигнал описывается в. OutputUnit не оказывает влияния на поведение системы.

Можно задать OutputUnit с помощью строки, такой как "voltage", но устройства вывода хранятся как вектор символов, 'voltage'.

Пример: 'voltage'

Пример: {'voltage','rpm'}

Выведите группы канала в виде структуры, где поля являются названиями группы, и значения являются индексами выходных каналов, принадлежащих соответствующей группе. Когда вы используете OutputGroup чтобы присвоить выходные каналы систем MIMO группам, можно обратиться к каждой группе по наименованию, когда необходимо получить доступ к ней. Например, предположите, что у вас есть модель sys с четырьмя выходами, где второй выход является температурой, и остальные - измерения состояния. Присвойте эти выходные параметры, чтобы разделить группы.

sys.OutputGroup.temperature = [2];
sys.InputGroup.measurements = [1 3 4];

Используйте название группы, чтобы извлечь подсистему от всех входных параметров до измерения выходные параметры.

sys('measurements',:)

Пример: struct('temperature',[2],'measurement',[1 3 4])

Имя модели, сохраненное как вектор символов. Можно задать Name с помощью строки, такой как "DCmotor", но устройства вывода хранятся как вектор символов, 'DCmotor'.

Пример: 'system_1'

Текст отмечает о модели, сохраненной как строка или массив ячеек из символьных векторов. Свойство хранит, какой бы ни из этих двух типов данных вы обеспечиваете. Например, предположите тот sys1 и sys2 модели динамической системы и устанавливают их Notes свойства к строке и вектору символов, соответственно.

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

Данные любого вида, который вы хотите сопоставить и сохранить моделью в виде любого типа данных MATLAB.

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

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

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

nominal_engine_rpm = [1000 5000 10000];
sys.SamplingGrid = struct('rpm', nominal_engine_rpm)

где sys массив, содержащий три идентифицированных модели, полученные в rpms 1000, 5000 и 10000, соответственно.

Для массивов моделей, сгенерированных путем линеаризации Simulink® модель в нескольких значениях параметров или рабочих точках, программное обеспечение заполняет SamplingGrid автоматически со значениями переменных, которые соответствуют каждой записи в массиве. Например, команды Simulink Control Design™ linearize (Simulink Control Design) и slLinearizer (Simulink Control Design) заполняет SamplingGrid таким образом.

Функции объекта

Для получения информации о функциях, которые применимы к idgrey возразите, см. Линейные Модели Серого ящика.

Примеры

свернуть все

Создайте и сконфигурируйте idgrey модель, которая включает функцию ОДУ одним допускающим оценку параметром.

Этот пример использует поставленный файл motorDynamics.m, который представляет линейную динамику двигателя постоянного тока в следующей форме:

x.(t)=[010-1τ]x(t)+[0Gτ]u(t)y(t)=[1001]x(t)

motorDynamics возвращаетсяA,B,C, и D матрицы и явным образом устанавливают элементы Kматрица и начальные условия X0 к 0. motorDynamics задает моторную постоянную времени τ как один допускающий оценку параметр. Модель также включает вспомогательный аргумент G это представляет известное статическое усиление. Если вы хотите просмотреть код для этой модели, введите edit motorDynamics в командной строке.

Инициализировать τ к 1 путем устанавливания значения parameters одноэлементная матрица к 1. Установите fcn_type к 'cd' задавать тот odefun может возвратить любое непрерывное время (Ts=0) или представление дискретного времени (Ts>0). Установите extra_args, который представляет G, к 0.25. Установите шаг расчета Ts к 0.

odefun = 'motorDynamics';
parameters = 1;
fcn_type = 'cd';
extra_args = 0.25; 
Ts = 0;

Создайте idgrey модель sys.

sys = idgrey(odefun,parameters,fcn_type,extra_args,Ts)
sys =
  Continuous-time linear grey box model defined by "motorDynamics" function:
      dx/dt = A x(t) + B u(t) + K e(t)
       y(t) = C x(t) + D u(t) + e(t)
 
  A = 
       x1  x2
   x1   0   1
   x2   0  -1
 
  B = 
         u1
   x1     0
   x2  0.25
 
  C = 
       x1  x2
   y1   1   0
   y2   0   1
 
  D = 
       u1
   y1   0
   y2   0
 
  K = 
       y1  y2
   x1   0   0
   x2   0   0
 
  Model parameters:
   Par1 = 1
 
Parameterization:
   ODE Function: motorDynamics
   (parametrizes both continuous- and discrete-time equations)
   Disturbance component: parameterized by the ODE function
   Initial state: parameterized by the ODE function
   Number of free coefficients: 1
   Use "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                         
Created by direct construction or transformation. Not estimated.

Совершенствовать оценку для τ, используйте pem или greyest.

Задайте известные параметры модели серого ящика, как зафиксировано для оценки. Также задайте минимум, направляющийся в допускающий оценку параметр.

Создайте файл ОДУ, который связывает коэффициенты модели маятника с его представлением пространства состояний. Сохраните эту функцию как LinearPendulum.m таким образом, что это находится на пути поиска файлов MATLAB®.

function [A,B,C,D] = LinearPendulum(m,g,l,b,Ts)
A = [0 1; -g/l, -b/m/l^2];
B = zeros(2,0);
C = [1 0];
D = zeros(1,0);
end 

В этой функции:

  • m масса маятника.

  • g гравитационное ускорение.

  • l длина маятника.

  • b коэффициент вязкого трения.

  • Ts шаг расчета модели.

Создайте линейную модель серого ящика, сопоставленную с функцией ОДУ.

odefun = 'LinearPendulum';

m = 1;
g = 9.81;
l = 1;
b = 0.2;
parameters = {'mass',m;'gravity',g;'length',l;'friction',b};

fcn_type = 'c';

sys = idgrey(odefun,parameters,fcn_type);

sys имеет четыре параметра.

Задайте известные параметры, mG, и l, как зафиксировано для оценки.

sys.Structure.Parameters(1).Free = false;
sys.Structure.Parameters(2).Free = false;
sys.Structure.Parameters(3).Free = false;

mG, и l первые три параметра sys.

Задайте нулевую нижнюю границу для b, четвертый параметр sys.

sys.Structure.Parameters(4).Minimum = 0;

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

Создайте модель серого ящика идентифицируемыми параметрами и свойствами, которые вы задаете. Затем задайте дополнительное свойство.

Используйте аргументы name-value, чтобы задать имена для графиков входного и выходного каналов.

odefun = 'motorDynamics';
parameters = 1;
fcn_type = 'cd';
extra_args = 0.25; 
Ts = 0;
sys = idgrey(odefun,parameters,fcn_type,extra_args,Ts,'InputName','Voltage',...
            'OutputName',{'Angular Position','Angular Velocity'});

Задайте TimeUnit использование записи через точку.

sys.TimeUnit = 'seconds';

Используйте stack команда, чтобы создать массив линейных моделей серого ящика.

Задайте odefun1 использование указателя на функцию @motordynamics. Установите статическое усиление на 1, использование extra_args1.

odefun1 = @motorDynamics;
parameters1 = [1 2];
fcn_type = 'cd';
extra_args1 = 1;
sys1 = idgrey(odefun1,parameters1,fcn_type,extra_args1);
size(sys1)
Grey-box model with 2 outputs, 1 inputs, 2 states and 2 free parameters.

Задайте odefun2 использование имени функции 'motorDynamics'. Установите статическое усиление на 0,5, с помощью extra_args2.

odefun2 = 'motorDynamics';
parameters2 = {[1 2]};
extra_args2 = 0.5;
sys2 = idgrey(odefun2,parameters2,fcn_type,extra_args2);

Используйте stack создать 2 1 массив sysarr из idgrey модели.

sysarr = stack(1,sys1,sys2);
size(sysarr)
2x1 array of grey-box models.
Each model has 2 outputs, 1 inputs, 2 states and 2 free parameters.
Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте