Оцените начальные состояния модели
x0 = findstates(sys,Data)
x0 = findstates(sys,Data,Horizon)
x0 = findstates(sys,Data,Horizon,Options)
[x0,Report]=
findstates(___)
Создайте нелинейную модель серого поля. Модель является линейным двигателем постоянного тока с одним входом (напряжение) и два выходных параметров (угловое положение и угловая скорость). Структура модели задана 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);
sys
— Identifiedidss
| объект idgrey
| объект idnlarx
| объект idnlhw
| объект idnlgrey
Идентифицированная модель, начальные состояния которой оцениваются, представляла как линейное пространство состояний (idss
или idgrey
) или нелинейная модель (idnlarx
, idnlhw
или idnlgrey
).
Данные
Данные об оценкеiddata
Данные об оценке, заданные как объект iddata
с размерностями ввода/вывода то соответствие sys
.
Если sys
является линейной моделью, Data
может быть объектом iddata
частотного диапазона. Для более легкой интерпретации начальных условий заставьте вектор частоты Data
быть симметричным вокруг начала координат. Для преобразования данных временного интервала в данные частотного диапазона используйте fft
с входным параметром 'compl'
и гарантируйте, что существует достаточное нулевое дополнение. Масштабируйте свои данные соответственно, когда вы сравните x0
между временным интервалом и частотным диапазоном. С тех пор для N - указывают fft, сигналы ввода/вывода масштабируются 1/sqrt(N)
, предполагаемый вектор x0
также масштабируется этим фактором.
Horizon
— Горизонт прогноза для вычислительного образцового ответа1
(значение по умолчанию) | положительное целое число между 1
и Inf
Горизонт прогноза для вычисления ответа 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 |
Непрерывно-разовые данные частотного диапазона ( | Inf |
Модели Ошибки на выходе (тривиальный шумовой компонент):
|
Не важный Любое значение |
Нелинейный ARX (idnlarx ) | 1 или Inf |
Опции
Опции оценки для findstates
findstates
установленаОпции оценки для findstates
, заданного как набор опции, созданный с помощью findstatesOptions
x0
Предполагаемые начальные состоянияПредполагаемые начальные состояния модели sys
, возвращенной как вектор или матрица. Для данных мультиэксперимента x0
является матрицей с одним столбцом для каждого эксперимента.
Report
— Информация об оценке начального состоянияИнформация об оценке начального состояния, возвращенная как структура. Report
содержит информацию о данных используемая, ковариация состояния и результаты любой числовой оптимизации, выполняемой, чтобы искать начальные состояния. Report
имеет следующие поля:
Сообщите о поле | Описание | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Сводные данные того, как начальное состояние было оценено. | ||||||||||||||||
Method | Метод поиска используется. | ||||||||||||||||
Covariance | Ковариация оценок состояния, возвращенных как Ns-by-Ns матрица, где Ns является количеством состояний. | ||||||||||||||||
DataUsed | Атрибуты данных используются для оценки, возвращенной как структура со следующими полями:
| ||||||||||||||||
Termination | Условия завершения для итеративного поиска используются для оценки начального состояния нелинейных моделей. Структура со следующими полями:
|
Поддержка параллельных вычислений доступна для оценки с помощью метода поиска lsqnonlin
(требует Optimization Toolbox™). Чтобы включить параллельные вычисления, используйте findstatesOptions
, установите SearchMethod
на 'lsqnonlin'
и установите SearchOptions.Advanced.UseParallel
на true
.
Например:
opt = findstatesOptions;
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.