findstates

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

Синтаксис

x0 = findstates(sys,Data)
x0 = findstates(sys,Data,Horizon)
x0 = findstates(sys,Data,Horizon,Options)
[x0,Report]= 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

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

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

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

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

| |

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