exponenta event banner

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 шаг вперед 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