findstates

Оцените начальные состояния модели

Описание

пример

x0 = findstates(sys,Data) оценивает начальные состояния, x0, из идентифицированной модели sys, максимизировать подгонку между ответом модели и выходным сигналом в данных об оценке.

пример

x0 = findstates(sys,Data,Horizon) задает горизонт прогноза для вычисления ответа sys.

пример

x0 = findstates(sys,Data,Horizon,Options) задает дополнительные опции для расчета x0.

пример

[x0,Report]= findstates(___) поставляет отчет относительно оценки начального состояния. Report возвращен с любым из предыдущих синтаксисов.

Примеры

свернуть все

Создайте нелинейную модель серого ящика. Модель является линейным двигателем постоянного тока с одним входом (напряжение) и два выходных параметров (угловое положение и скорость вращения). Структура модели задана dcmotor_m.m файлом.

FileName = 'dcmotor_m'; 
Order = [2 1 2];
Parameters = [0.24365;0.24964];  
nlgr = idnlgrey(FileName,Order,Parameters);  
nlgr = setinit(nlgr, 'Fixed', false(2,1)); % set initial states free

Загрузите данные для оценки начального состояния.

load(fullfile(matlabroot,'toolbox','ident',...
     'iddemos','data','dcmotordata'));
z = iddata(y,u,0.1);

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

X0 = findstates(nlgr,z,Inf);

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

Загрузка демонстрационных данных.

load iddata1 z1;

Оцените линейную модель из данных.

model = ssest(z1,2);

Оцените, что значение начальных состояний лучше всего соответствует измеренному выходу z1.y.

x0est = findstates(model,z1,Inf);

Симулируйте модель.

opt = simOptions('InitialCondition',x0est);
sim(model,z1(:,[],:),opt);

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

Создайте нелинейную модель серого ящика.

FileName = 'dcmotor_m'; 
Order = [2 1 2];
Parameters = [0.24365;0.24964];  
nlgr = idnlgrey(FileName,Order,Parameters);

Модель является линейным двигателем постоянного тока с одним входом (напряжение) и два выходных параметров (угловое положение и скорость вращения). Структура модели задана dcmotor_m.m файл.

Загрузите данные об оценке.

load(fullfile(matlabroot,'toolbox','ident',...
     'iddemos','data','dcmotordata'));
z = iddata(y,u,0.1);

Содержите первое состояние, зафиксированное в нуле, и оцените значение второго.

x0spec = idpar('x0',[0;0]);
x0spec.Free(1) = false;
opt = findstatesOptions;
opt.InitialState = x0spec;
[X0,Report] = findstates(nlgr,z,Inf,opt)
X0 = 2×1

         0
    0.0061

Report = 
         Status: 'Estimated by simulation error minimization'
         Method: 'lsqnonlin'
     Covariance: [2x2 double]
       DataUsed: [1x1 struct]
    Termination: [1x1 struct]

Создайте нелинейную модель серого ящика.

FileName = 'dcmotor_m'; 
Order = [2 1 2];
Parameters = [0.24365;0.24964];  
nlgr = idnlgrey(FileName,Order,Parameters);

Модель является линейным двигателем постоянного тока с одним входом (напряжение) и два выходных параметров (угловое положение и скорость вращения). Структура модели задана dcmotor_m.m файл.

Загрузите данные об оценке.

load(fullfile(matlabroot,'toolbox','ident',...
     'iddemos','data','dcmotordata'));
z = iddata(y,u,0.1);

Задайте исходное предположение для начальных состояний.

x0spec = idpar('x0',[10;10]);

x0spec.Free верно по умолчанию

Оцените начальные состояния

opt = findstatesOptions;
opt.InitialState = x0spec;
x0 = findstates(nlgr,z,Inf,opt)
x0 = 2×1

    0.0362
   -0.1322

Создайте нелинейную модель серого ящика.

FileName = 'dcmotor_m'; 
Order = [2 1 2];
Parameters = [0.24365;0.24964];  
nlgr = idnlgrey(FileName,Order,Parameters);  
set(nlgr, 'InputName','Voltage','OutputName', ...
		{'Angular position','Angular velocity'});

Модель является линейным двигателем постоянного тока с одним входом (напряжение) и два выходных параметров (угловое положение и скорость вращения). Структура модели задана dcmotor_m.m файл.

Загрузите данные об оценке.

load(fullfile(matlabroot,'toolbox','ident',...
     'iddemos','data','dcmotordata'));
z = iddata(y,u,0.1,'Name','DC-motor',...
     'InputName','Voltage','OutputName',...
     {'Angular position','Angular velocity'});

Создайте набор данных с тремя экспериментами.

z3 = merge(z,z,z);

Выберите эксперимент для оценки начальных состояний:

  • Оцените начальное состояние 1 для экспериментов 1 и 3

  • Оцените начальное состояние 2 для эксперимента 1

Фиксированные начальные состояния имеют нулевые значения.

x0spec = idpar('x0',zeros(2,3));
x0spec.Free(1,2) = false;
x0spec.Free(2,[2 3]) = false;
opt = findstatesOptions;
opt.InitialState = x0spec;

Оцените начальные состояния

[X0,EstInfo] = findstates(nlgr,z3,Inf,opt);

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

свернуть все

Идентифицированная модель, начальные состояния которой оцениваются, представляла как линейное пространство состояний (idss или idgrey) или нелинейная модель (idnlarx, idnlhw, или idnlgrey).

Данные об оценке, заданные как iddata объект с размерностями ввода/вывода то соответствие sys.

Если sys линейная модель, Data может быть частотный диапазон iddata объект. Для более легкой интерпретации начальных условий сделайте вектор частоты Data будьте симметричны вокруг начала координат. Для преобразования данных временного интервала в данные частотного диапазона используйте fft с 'compl' входной параметр, и гарантирует, что существует достаточное нулевое дополнение. Масштабируйте свои данные соответственно, когда вы сравните x0 между временным интервалом и частотным диапазоном. С тех пор для N - указывают fft, сигналы ввода/вывода масштабируются 1/sqrt(N), предполагаемый x0 вектор также масштабируется этим фактором.

Горизонт прогноза для вычисления ответа sys, заданный как положительное целое число между 1 и Inf. Наиболее распространенные используемые значения:

  • Horizon = 1 — Минимизирует ошибку прогноза с 1 шагом. 1 шаг вперед ответ прогноза sys сравнивается с выходными сигналами в Data определить x0. Смотрите predict для получения дополнительной информации.

  • Horizon = Inf — Минимизирует ошибку симуляции. Различие между измеренным выходом, Data.y, и симулированный ответ sys к измеренным входным данным, Data.u минимизирован. Смотрите sim для получения дополнительной информации.

Задайте Horizon как любое положительное целое число между 1 и Inf, со следующими ограничениями:

СценарийHorizon

Модель непрерывного времени с данными временного интервала

1 или Inf

Данные частотного диапазона непрерывного времени (data.Ts = 0)

Inf

Модели Ошибки на выходе (тривиальный шумовой компонент):

  • Нелинейный серый ящик (idnlgrey)

  • Хаммерстайн-Винер (idnlhw)

  • Линейное пространство состояний с матрицей воздействия, K= 0

Не важный

Любое значение Horizon дает тот же ответ для x0

Нелинейный ARX (idnlarx)1 или Inf

Опции оценки для findstates, заданный как набор опции, созданный с помощью findstatesOptions

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

свернуть все

Предполагаемые начальные состояния модели sys, возвращенный как вектор или матрица. Для данных мультиэксперимента, x0 матрица с одним столбцом для каждого эксперимента.

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

Сообщите о полеОписание
Status

Сводные данные того, как начальное состояние было оценено.

Method

Метод поиска используется.

Covariance

Ковариация оценок состояния, возвращенных как Ns-by-Ns матрица, где Ns является количеством состояний.

DataUsed

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

Поле Описание
Name

Имя набора данных.

Type

Тип данных.

Length

Количество выборок данных.

Ts

'SampleTime' .

InterSample

Введите междемонстрационное поведение, возвращенное как одно из следующих значений:

  • 'zoh' — Нулевой порядок содержит, обеспечивает кусочно-постоянный входной сигнал между выборками.

  • 'foh' — Хранение первого порядка обеспечивает кусочно-линейный входной сигнал между выборками.

  • 'bl' — Ограниченное полосой поведение указывает, что входной сигнал непрерывного времени имеет нулевую силу выше частоты Найквиста.

InputOffset

Возместите удаленный из входных данных временного интервала во время оценки. Для нелинейных моделей это - [].

OutputOffset

Возместите удаленный из выходных данных временного интервала во время оценки. Для нелинейных моделей это - [].

Termination

Условия завершения для итеративного поиска используются в оценке начального состояния нелинейных моделей. Структура со следующими полями:

Поле Описание
WhyStop

Причина завершения числового поиска.

Iterations

Количество поисковых итераций выполняется алгоритмом оценки.

FirstOrderOptimality

- норма вектора просмотра градиента, когда алгоритм поиска останавливается.

FcnCount

Число раз целевая функция было названо.

UpdateNorm

Норма вектора просмотра градиента в последней итерации. Не использованный, когда методом поиска является 'lsqnonlin' или 'fmincon'.

LastImprovement

Улучшение критерия последней итерации, выраженной как процент. Не использованный, когда методом поиска является 'lsqnonlin' или 'fmincon'.

Algorithm

Алгоритм используется 'lsqnonlin' или 'fmincon' метод поиска. Не использованный, когда другие методы поиска используются.

Termination пусто для линейных моделей.

Расширенные возможности

Смотрите также

| |

Представленный в R2015a