Блоки, которые не имеют предварительно запрограммированных аналитических якобианов, линеаризируются с помощью численного возмущения. Вы можете изменить размер состояния и уровни возмущения входного сигнала для вашего приложения.
В этом примере показано, как изменить уровень возмущения на блок Magnetic Ball Plant в модели магбола. Изменение уровня возмущения изменяет результаты линеаризации.
Для этой модели значение состояния и входного сигнала являются значениями двойной точности. Размер возмущения по умолчанию для состояния и входных сигналов в этой модели, , где - значение рабочей точки возмущенного состояния или входного сигнала.
Откройте модель перед изменением уровня возмущения.
open_system('magball')
Измените уровень возмущения состояний на , где - значение состояния.
blockname = 'magball/Magnetic Ball Plant'; set_param(blockname,'StatePerturbationForJacobian','1e-7');
Чтобы изменить уровень возмущения входного сигнала для этого блока на , где является значением входного сигнала, сначала получите указатели на порт блока и получите указатель на вход значение порта.
ph = get_param(blockname,'PortHandles');
p_in = ph.Inport(1);
Затем установите уровень возмущения порта входа.
set_param(p_in,'PerturbationForJacobian','1e-3');
Чтобы получить уровень возмущения тока для состояний блока, используйте следующий код.
statePerturb = get_param(blockname,'StatePerturbationForJacobian');
Чтобы получить уровень возмущения тока для входных сигналов блока, используйте следующий код.
inputPerturb = get_param(p_in,'PerturbationForJacobian');
Когда соответствующее состояние или уровень возмущения входного сигнала находится на своем значении по умолчанию, оба statePerturb
и inputPerturb
являются 'auto'
.
Размер возмущения по умолчанию для состояний двойной точности и входных сигналов, , где x - значение рабочей точки возмущенного состояния или входного сигнала. Для состояний с одной точностью и входных сигналов, размер возмущения по умолчанию является .
Чтобы восстановить уровень возмущения по умолчанию для состояний блока, используйте следующий код.
set_param(blockname,'StatePerturbationForJacobian','auto');
Чтобы восстановить уровень возмущения по умолчанию для входных сигналов блоков, используйте следующий код.
set_param(p_in,'PerturbationForJacobian','auto');
Пользовательский блок, который требует целого числа портов входа для индексации, может иметь проблемы с линеаризацией, когда блок не поддерживает небольшие возмущения в вход значении. Чтобы исправить проблему, попробуйте задать уровень возмущения такого блока на нуль, который устанавливает линеаризацию блока на коэффициент усиления 1.