Вычислите рабочую точку для нелинейной модели ARX
[ возвращает значения состояния рабочей точки, X,U] =
findop(sys,'steady',InputLevel,OutputLevel)X, и входные значения, U, дляidnlarx модель, sys, с использованием статических входных и выходных спецификаций.
Оцените нелинейную модель ARX.
load iddata6;
M = nlarx(z6,[4 3 1]);Найдите установившуюся рабочую точку, к которой фиксирован входной уровень 1 и выход неизвестен.
[X,U] = findop(M,'steady',1,NaN);Оцените нелинейную модель ARX.
load iddata7;
M = nlarx(z7,[4 3*ones(1,2) 2*ones(1,2)]);Создайте объект спецификации рабочей точки по умолчанию.
spec = operspec(M);
Установите значения для входных сигналов.
spec.Input.Value(1) = -1; spec.Input.Value(2) = 1;
Установите максимальное и минимальное значения для сигнала выхода.
spec.Output.Max = 10; spec.Output.Min = -10;
Найдите установившуюся рабочую точку с помощью заданных спецификаций.
[X,U] = findop(M,spec);
Оцените нелинейную модель ARX.
load iddata6;
M = nlarx(z6,[4 3 2]);Создайте findopOptions по умолчанию набор опций.
opt = findopOptions(M);
Измените набор опций, чтобы задать метод поиска градиента наискорейшего спуска с максимум 50 итерациями.
opt.SearchMethod = 'grad';
opt.SearchOptions.MaxIterations = 50;Найдите установившуюся рабочую точку с помощью заданных опций.
[X,U] = findop(M,'steady',1,1,opt);Оцените нелинейную модель ARX.
load iddata7;
M = nlarx(z7,[4 3*ones(1,2) 2*ones(1,2)]);Найдите установившуюся рабочую точку, где вход 1 установлен в 1 и вход 2 не ограничен. Начальное предположение для выхода значения 2.
[X,U,R] = findop(M,'steady',[1 NaN],2);Отображение сводного отчета.
disp(R);
SearchMethod: 'auto'
WhyStop: 'Near (local) minimum, (norm(g) < tol).'
Iterations: 20
FinalCost: 1.9722e-31
FirstOrderOptimality: 2.4434e-16
SignalLevels: [1x1 struct]
Загрузите данные оценки и оцените нелинейную модель ARX.
load twotankdata;
z = iddata(y,u,1);
M = nlarx(z,[4 3 1]);Найдите снимок симуляции через 10 секунд, принимая начальные состояния в нуле.
[X,U] = findop(M,'snapshot',10,z);Загрузите данные оценки и оцените нелинейную модель ARX.
load twotankdata;
z = iddata(y,u,1);
M = nlarx(z,[4 3 1]);Создайте вектор начального состояния. Первые четыре состояния соответствуют задержанным выходным значениям, а последние три состояния соответствуют задержанным входам.
X0 = [2;2;2;2;5;5;5];
Найдите снимок симуляции через 10 секунд с использованием заданных начальных состояний.
[X,U] = findop(M,'snapshot',10,z,X0);sys - Нелинейная модель ARXidnlarx объектНелинейная модель ARX, заданная как idnlarx объект.
InputLevel - Установившийся входной уровеньУстановившийся входной уровень для вычисления рабочей точки, заданный как вектор. Длина InputLevel должно равняться количеству входов, заданных в sys.
Алгоритм оптимизации принимает, что конечные значения в InputLevel являются фиксированными входными значениями. Использование NaN для задания неизвестных входных сигналов с начальными предположениями 0. Минимальная и максимальная границы для всех входов имеют значения по умолчанию -Inf и +Inf соответственно.
OutputLevel - Установившийся выходной уровеньУстановившийся выходной уровень для вычисления рабочей точки, заданный как вектор. Длина OutputLevel должно равняться количеству выходов, указанных в sys.
Значения в OutputLevel указать начальные догадки для алгоритма оптимизации. Использование NaN для задания неизвестных выходных сигналов с начальными предположениями 0. Минимальная и максимальная границы для всех выходов имеют значения по умолчанию -Inf и +Inf соответственно.
spec - спецификации к рабочей точкеoperspec объектСпецификации рабочей точки, такие как минимальные и максимальные входные/выходные ограничения и известные входы, заданные какoperspec объект.
T - Время моментального снимка рабочей точкиВремя моментального снимка рабочей точки, заданное как положительная скалярная величина. Значение T должен находиться в диапазоне [T0, N * Ts], где N - количество входных выборок, Ts - время расчета и T0 - время начала ввода (Uin.Tstart).
Uin - Вход симуляции моментального снимкаiddataматрица | объектаВход симуляции моментального снимка, заданный как один из следующих:
Временная область iddata объект с шагом расчета и входом размером, соответствующим sys.
Матрица с таким количеством столбцов, сколько существует входных каналов. Если матрица имеет N строки, входные данные приняты соответствующими временному вектору (1:N)*sys.Ts.
X0 - Начальные состоянияНачальные состояния симуляции, заданные как вектор-столбец с размером, равным количеству состояний в sys. X0 обеспечивает начальные условия в момент времени, соответствующий первой входной выборке (Uin.Start, если Uin является iddata объект, или sys.Ts если Uin является двойной матрицей).
Для получения дополнительной информации о состояниях idnlarx модель, см. Определение состояний idnlarx.
Options - Опции поиска рабочей точкиfindopOptions набор опцийОпции поиска рабочей точки, заданные как findopOptions набор опций.
X - Значения состояния рабочей точкиЗначения состояния рабочей точки, возвращенные как вектор-столбец длины, равной количеству состояний модели.
U - Входные значения рабочей точкиВходные значения рабочей точки, возвращенные как вектор-столбец длины, равной количеству входов.
Report - сводные данные результатов поискаИтоговый отчет результатов поиска, возвращенный как структура со следующими полями:
| Область | Описание |
|---|---|
SearchMethod | Метод поиска, используемый для итерационной оценки параметра. См. SearchMethod в findopOptions для получения дополнительной информации. |
WhyStop | Условие завершения алгоритма поиска. |
Iterations | Количество выполненных итераций оценки. |
FinalCost | Окончательное значение целевой функции минимизации (сумма квадратичных невязок). |
FirstOrderOptimality | -norm вектора градиента поиска, когда алгоритм поиска заканчивается. |
SignalLevels | Структура, содержащая поля Input и Output, которые являются входами и выходного сигналов рабочей точки соответственно. |
findop вычисляет рабочую точку из статических спецификаций рабочей точки или на моментальном снимке симуляции.
Чтобы вычислить установившуюся рабочую точку, вызовите findop использование любого из следующих синтаксисов:
[X,U] = findop(sys,'steady',InputLevel,OutputLevel) [X,U] = findop(sys,spec)
Чтобы вычислить состояния, X, и вход, U, установившейся рабочей точки, findop минимизирует норму ошибки e (<reservedrangesplaceholder7>) = y (<reservedrangesplaceholder5>) - f (x (<reservedrangesplaceholder2>), u (<reservedrangesplaceholder0>)), где:
f является оценщиком нелинейности.
u (t) является входом.
x (t) является состоянием модели.
y (t) является выходом модели.
Вы можете задать алгоритм поиска и опции поиска, используя findopOptions набор опций.
Алгоритм использует следующие независимые переменные для минимизации:
Неизвестные (неопределенные) уровни входного сигнала
Уровни выходного сигнала
Потому что idnlarx состояния модели являются задержанными выборками входной и выходной переменных, значения состояний являются постоянными значениями соответствующих статических входов и выходов. Для получения дополнительной информации об определении нелинейных состояний модели ARX, см. Определение состояний idnlarx.
Когда вы используете синтаксис [X,U] = findop(sys,'snapshot',T,Uin,X0)алгоритм моделирует выход модели до момента моментального снимка, T. Во время моментального снимка алгоритм передает входную и выходную выборки data2state команда, чтобы сопоставить эти значения с вектором текущего состояния.
Примечание
Для расчетов на основе моментальных снимков, findop не выполняет числовую оптимизацию.
Поддержка параллельных вычислений доступна для оценки с помощью lsqnonlin метод поиска (требует Optimization Toolbox™). Чтобы включить параллельные вычисления, используйте findopOptions, задать SearchMethod на 'lsqnonlin', и задать SearchOptions.Advanced.UseParallel на true.
Для примера:
opt = findopOptions(idnlarx);
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
data2state | findopOptions | idnlarx | idnlarx/operspec | idnlhw/findop | sim
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.