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);

Figure Estimated using SSEST with prediction focus contains an axes. The axes with title Simulated output #1: y1 contains an object of type line. This object represents y1.

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

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

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 по умолчанию является true

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

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

Шаг расчета.

InterSample

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

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

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

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

InputOffset

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

OutputOffset

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

Termination

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

ОбластьОписание
WhyStop

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

Iterations

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

FirstOrderOptimality

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

FcnCount

Количество вызовов целевой функции.

UpdateNorm

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

LastImprovement

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

Algorithm

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

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

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

См. также

| |

Введенный в R2015a