Вычислите рабочую точку для модели Хаммерстайна-Винера
[X,U] =
findop(sys,'steady',InputLevel,OutputLevel)
[X,U] =
findop(sys,spec)
[X,U] =
findop(___,Options)
[X,U,Report]
= findop(___)
[X,U] =
findop(sys,'snapshot',T,Uin)
[X,U] =
findop(sys,'snapshot',T,Uin,X0)
[
возвращает значения состояния рабочей точки, X
,U
] =
findop(sys
,'steady',InputLevel
,OutputLevel
)X
, и входные значения, U
, для модели idnlhw
, sys
, с помощью установившихся спецификаций ввода и вывода.
Загрузите данные об оценке и оцените модель Хаммерстайна-Винера.
load twotankdata;
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);
Найдите установившуюся рабочую точку, где уровень на входе установлен в 1
, и вывод неизвестен.
[X,U] = findop(M,'steady',1,NaN);
Оцените модель Хаммерстайна-Винера.
load iddata7; orders = [4*ones(1,2) 2*ones(1,2) 3*ones(1,2)]; M = nlhw(z7,orders,'unitgain','pwlinear');
Создайте объект спецификации рабочей точки по умолчанию.
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);
Загрузите данные об оценке и оцените модель Хаммерстайна-Винера.
load twotankdata;
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);
Создайте набор опции findopOptions
по умолчанию.
opt = findopOptions(M);
Измените набор опции, чтобы задать метод поиска градиента быстрейшего спуска, имеющий до 50 итераций.
opt.SearchMethod = 'grad';
opt.SearchOptions.MaxIterations = 50;
Найдите установившуюся рабочую точку с помощью заданных опций.
[X,U] = findop(M,'steady',1,NaN,opt);
Загрузите данные об оценке и оцените модель Хаммерстайна-Винера.
load iddata7; orders = [4*ones(1,2) 2*ones(1,2) 3*ones(1,2)]; M = nlhw(z7,orders,'unitgain','pwlinear');
Найдите, что установившаяся рабочая точка, где введено 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: 3 FinalCost: 1.9722e-31 FirstOrderOptimality: 1.6481e-16 SignalLevels: [1x1 struct]
Загрузите оценку данных об оценке модель Хаммерстайна-Винера.
load twotankdata;
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);
Найдите снимок состояния симуляции после 10 секунд, приняв начальные состояния нуля.
[X,U] = findop(M,'snapshot',10,z);
Загрузите данные об оценке и оцените модель Хаммерстайна-Винера.
load twotankdata
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);
Создайте вектор начального состояния.
X0 = [10;10;5;5;1;1;0];
Найдите снимок состояния симуляции после 10 секунд с помощью заданных начальных состояний.
[X,U] = findop(M,'snapshot',10,z,X0);
sys
— Модель Хаммерстайна-Винераidnlhw
Модель Хаммерстайна-Винера, заданная как объект idnlhw
.
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
является двойной матрицей).
Для получения дополнительной информации о состояниях модели idnlhw
, см. Определение idnlhw состояний.
Опции
Параметры поиска рабочей точкиfindopOptions
установленаУстановлены параметры поиска рабочей точки, заданные как опция findopOptions
.
X
Значения состояния рабочей точкиЗначения состояния рабочей точки, возвращенные как вектор-столбец длины, равняются количеству образцовых состояний.
U
Входные значения рабочей точкиВходные значения рабочей точки, возвращенные как вектор-столбец длины, равняются количеству входных параметров.
Report
— Сводные данные результата поискаСводный отчет результата поиска, возвращенный как структура со следующими полями:
Поле | Описание |
---|---|
SearchMethod | Метод поиска используется для итеративной оценки параметра. Смотрите SearchMethod в findopOptions для получения дополнительной информации. |
WhyStop | Условие завершения алгоритма поиска. |
Iterations | Количество итераций оценки выполняется. |
FinalCost | Окончательное значение целевой функции минимизации (сумма квадратичных невязок). |
FirstOrderOptimality | - норма поискового вектора градиента, когда алгоритм поиска останавливается. |
SignalLevels | Структура, содержащая поля Input и Output , которые являются уровнями сигнала ввода и вывода рабочей точки соответственно. |
findop
вычисляет рабочую точку из установившихся спецификаций рабочей точки или в снимке состояния симуляции.
Чтобы вычислить установившуюся рабочую точку, вызовите findop
с помощью любого из следующих синтаксисов:
[X,U] = findop(sys,'steady',InputLevel,OutputLevel) [X,U] = findop(sys,spec)
findop
использует другой подход, чтобы вычислить установившуюся рабочую точку в зависимости от того, сколько информации вы предусматриваете это вычисление:
Когда вы задаете значения для всех уровней на входе (никакие значения NaN
). Для данного уровня на входе, U, значениями состояния равновесия является X = inv (I-A) *B*f (U), где [A,B,C,D] = ssdata(model.LinearModel)
и f () являются входной нелинейностью.
Когда вы задаете известные и неизвестные уровни на входе. findop
использует числовую оптимизацию, чтобы минимизировать норму ошибки и вычислить рабочую точку. Полная погрешность является объединением вкладов от e1 и e2, e (t) = (e1 (t) e2 (t)), такой что:
e1 запрашивает известные выходные параметры, и алгоритм минимизирует e1 = y - g (L (x, f (u))), где f является входной нелинейностью, L (x, u) является линейной моделью с состояниями x, и g является выходной нелинейностью.
e2 запрашивает неизвестные выходные параметры, и ошибка является мерой того, являются ли эти выходные параметры в заданных минимальных и максимальных границах. Если переменная в ее заданных границах, соответствующая ошибка является нулем. В противном случае ошибка равна расстоянию от связанного самого близкого. Например, если свободная выходная переменная имеет значение, z и его минимальными и максимальными границами является L и U, соответственно, то ошибкой является e2 = макс. [z-U, L-z, 0].
Независимые переменные для проблемы минимизации являются неизвестными входными параметрами. В ошибочном определении e и вход u и состояния x являются свободными переменными. Чтобы получить ошибочное выражение, которое содержит только неизвестные входные параметры как свободные переменные, алгоритм, findop
задает состояния как функцию входных параметров путем наложения установившихся условий: x = inv (I-A) *B*f (U), где A и B являются параметрами пространства состояний, соответствующими линейной модели L (x, u). Таким образом заменяя x = inv (I-A) *B*f (U) в функцию ошибок приводит к ошибочному выражению, которое содержит только неизвестные входные параметры как свободные переменные, вычисленные алгоритмом оптимизации.
Когда вы используете синтаксис [X,U] = findop(sys,'snapshot',T,UIN,X0)
, алгоритм моделирует образцовый вывод до времени снимка состояния, T
. Во время снимка состояния алгоритм вычисляет входные параметры для линейного блока модели модели Хаммерстайна-Винера (свойство LinearModel
объекта theidnlhw
) путем преобразования данных входных параметров с помощью входной нелинейности: w = f (u). findop
использует получившийся w, чтобы вычислить x
до времени снимка состояния с помощью следующего уравнения: x (t +1) = Ax (t) + Bw (t), где [A,B,C,D] = ssdata(model.LinearModel)
.
Для основанных на снимке состояния вычислений findop
не выполняет числовую оптимизацию.
Поддержка параллельных вычислений доступна для оценки с помощью метода поиска lsqnonlin
(требует Optimization Toolbox™). Чтобы включить параллельные вычисления, используйте findopOptions
, установите SearchMethod
на 'lsqnonlin'
и установите SearchOptions.Advanced.UseParallel
на true
.
Например:
opt = findopOptions(idnlhw);
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
findopOptions
| idnlarx/findop
| idnlhw
| idnlhw/operspec
| sim
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.