balred

Моделируйте сокращение порядка

    Описание

    пример

    [rsys,info] = balred(sys,order) вычисляет приближение пониженного порядка rsys модели LTI sys. Желаемый порядок (количество состояний) задается order. Можно попробовать несколько порядки сразу, установив order в вектор целых чисел, в этом случае rsys является массивом уменьшенных моделей. balred также возвращает структуру info с дополнительной информацией, такой как сингулярные значения Ханкеля (HSV), ошибка, уровень регуляризации и факторы Холецкого грамма.

    пример

    [~,info] = balred(sys) возвращает структуру info без вычисления модели пониженного порядка. Можно использовать эту информацию для выбора сокращенного порядка <reservedrangesplaceholder0> исходя из вашей желаемой верности.

    Примечание

    Когда эффективность является проблемой, избегайте вычисления сингулярных значений Ханкеля дважды, используя информацию, полученную из вышеописанного синтаксиса, чтобы выбрать желаемый порядок модели и затем использовать rsys = balred(sys,order,info) для вычисления модели пониженного порядка.

    пример

    [___] = balred(___,opts) вычисляет уменьшенную модель с помощью набора опций opts что вы задаете используя balredOptions (Control System Toolbox). Можно задать дополнительные опции для устранения состояний, используя абсолютное и относительная погрешность управление, подчеркивая определённые временные или частотные полосы и разделяя стабильные и нестабильные режимы. Посмотрите balredOptions (Control System Toolbox), чтобы создать и сконфигурировать набор опций opts.

    пример

    balred(sys) отображает сингулярные значения Ханкеля и ошибку приближения на графике. Использовать hsvplot (Control System Toolbox), чтобы настроить этот график.

    Примеры

    свернуть все

    В данном примере используйте график сингулярного значения Ханкеля, чтобы выбрать подходящий порядок и вычислить модель пониженного порядка.

    Для этого образца сгенерируйте случайную модель пространства состояний в дискретном времени с 40 состояниями.

    rng(0)
    sys = drss(40);

    Постройте график сингулярных значений Ханкеля с помощью balred.

    balred(sys)

    Figure contains an axes. The axes with title Hankel Singular Values and Approximation Error contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

    В данном примере выберите порядок 16 поскольку это первый порядок с абсолютной ошибкой меньше 1e-4. В целом, вы выбираете порядок на основе желаемой абсолютной или относительной точности. Затем вычислите модель пониженного порядка.

    rsys = balred(sys,16);

    Проверьте абсолютную ошибку, построив график сингулярного значения отклика с помощью sigma.

    sigma(sys,sys-rsys)

    Figure contains an axes. The axes contains 2 objects of type line. These objects represent sys, untitled1.

    На графике заметьте, что ошибка, представленная красной кривой, ниже -80 dB (1e-4).

    В данном примере рассмотрим случайную модель пространства состояний в непрерывном времени с 65 состояниями.

    rng(0)
    sys = rss(65);
    size(sys)
    State-space model with 1 outputs, 1 inputs, and 65 states.
    

    Визуализируйте сингулярные значения Ханкеля на графике.

    balred(sys)

    Figure contains an axes. The axes with title Hankel Singular Values and Approximation Error contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

    Для этого образца вычислите модели пониженного порядка с 25, 30 и 35 состояниями.

    order = [25,30,35];
    rsys = balred(sys,order);
    size(rsys)
    3x1 array of state-space models.
    Each model has 1 outputs, 1 inputs, and between 25 and 35 states.
    

    Вычислите аппроксимацию системы в пониженном порядке, заданную:

    G(s)=(s+0.5)(s+1.1)(s+2.9)(s+10-6)(s+1)(s+2)(s+3).

    Создайте модель.

    sys = zpk([-0.5 -1.1 -2.9],[-1e-6 -2 -1 -3],1);

    Исключить полюс в s=10-6 от стабильного срока стабильного/нестабильного разложения. Для этого установите Offset опция balredOptions к значению, большему, чем полюс, который вы хотите исключить.

    opts = balredOptions('Offset',0.001,'StateProjection','Truncate');

    Визуализируйте сингулярные значения Ханкеля (HSV) и ошибку приближения.

    balred(sys,opts)

    Figure contains an axes. The axes with title Hankel Singular Values and Approximation Error contains 3 objects of type bar, line. These objects represent Unstable modes, Stable modes, Absolute error bound.

    Заметьте, что первый HSV является красным, что указывает на то, что он связан с нестабильным режимом.

    Теперь вычислите приближение второго порядка с заданными опциями.

    [rsys,info] = balred(sys,2,opts);
    rsys
    rsys =
     
      0.99113 (s+0.5235)
      -------------------
      (s+1e-06) (s+1.952)
     
    Continuous-time zero/pole/gain model.
    

    Заметьте, что полюс в -1e-6 появляется неизменным в уменьшенной модели rsys.

    Сравните отклики исходной и модели пониженного порядка.

    bodeplot(sys,rsys,'r--')

    Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent sys, rsys. Axes 2 contains 2 objects of type line. These objects represent sys, rsys.

    Заметьте, что bode-реакция исходной модели и модели пониженного порядка почти совпадает.

    Уменьшите модель высокого порядка с особым вниманием на динамику в конкретной частотной области значений.

    Загрузите модель и исследуйте ее частотную характеристику.

    load('highOrderModel.mat','G')
    bodeplot(G)

    Figure contains 2 axes. Axes 1 contains an object of type line. This object represents G. Axes 2 contains an object of type line. This object represents G.

    G является моделью 48-го порядка с несколькими большими пиковыми областями около 5,2 рад/с, 13,5 рад/с и 24,5 рад/с и меньшим peaks, разбросанными по многим частотам. Предположим, что для вашего приложения вас интересует только динамика около второго большого пика, между 10 рад/с и 22 рад/с. Фокусируйте снижение сложности модели на необходимую область, чтобы получить хороший матч с аппроксимацией младшим порядком. Использование balredOptions (Control System Toolbox), чтобы задать частотный интервал для balred.

    bopt = balredOptions('StateProjection','Truncate','FreqIntervals',[10,22]);
    GLim10 = balred(G,10,bopt);
    GLim18 = balred(G,18,bopt);

    Исследуйте частотные характеристики моделей пониженного порядка. Кроме того, исследуйте различие между этими ответами и исходным ответом (абсолютная ошибка).

    subplot(2,1,1);
    bodemag(G,GLim10,GLim18,logspace(0.5,1.5,100));
    title('Bode Magnitude Plot')
    legend('Original','Order 10','Order 18');
    subplot(2,1,2);
    bodemag(G-GLim10,G-GLim18,logspace(0.5,1.5,100));
    title('Absolute Error Plot')
    legend('Order 10','Order 18');

    Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original, Order 10, Order 18. Axes 2 contains 2 objects of type line. These objects represent Order 10, Order 18.

    С ограниченной по частоте энергетического расчета даже аппроксимация 10-го порядка довольно хороша в необходимую область.

    В данном примере рассмотрим модель пространства состояний SISO cdrom со 120 состояниями. Можно использовать абсолютное или относительная погрешность управление при аппроксимации моделей с balred. Этот пример сравнивает два подхода при применении к модели 120 состояний портативного устройства проигрывателя компакт-дисков crdom [1,2].

    Загрузите модель CD-проигрывателя cdrom.

    load cdromData.mat cdrom
    size(cdrom)
    State-space model with 1 outputs, 1 inputs, and 120 states.
    

    Чтобы сравнить результаты с абсолютным и относительная погрешность управлением, создайте один набор опций для каждого подхода.

    opt_abs = balredOptions('ErrorBound','absolute','StateProjection','truncate');
    opt_rel = balredOptions('ErrorBound','relative','StateProjection','truncate');

    Вычислите модели пониженного порядка порядка 15 с обоими подходами.

    rsys_abs = balred(cdrom,15,opt_abs);
    rsys_rel = balred(cdrom,15,opt_rel);
    size(rsys_abs)
    State-space model with 1 outputs, 1 inputs, and 15 states.
    
    size(rsys_rel)
    State-space model with 1 outputs, 1 inputs, and 15 states.
    

    Постройте график отклика Боде исходной модели вместе с моделями с пониженными абсолютной ошибками и относительными погрешностями.

    bo = bodeoptions; 
    bo.PhaseMatching = 'on';
    bodeplot(cdrom,'b.',rsys_abs,'r',rsys_rel,'g',bo)
    legend('Original (120 states)','Absolute Error (15 states)','Relative Error (15 states)')

    Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Original (120 states), Absolute Error (15 states), Relative Error (15 states). Axes 2 contains 3 objects of type line. These objects represent Original (120 states), Absolute Error (15 states), Relative Error (15 states).

    Заметьте, что ответ Боде:

    • Модель уменьшения относительной погрешности rsys_rel почти соответствует отклику исходной модели sys через полную частотную область значений.

    • Модель с пониженной абсолютной ошибкой rsys_abs соответствует отклику исходной модели sys только в областях с наибольшим усилением.

    Ссылки

    1. Эталонные примеры для снижения сложности модели, стандартной подпрограммы в системах и теории управления (SLICOT). Набор данных CDROM воспроизводится с разрешением, для получения дополнительной информации см. BSD3-license.

    2. А.Варга, «О стохастической балансировке, связанной с снижением сложности модели», Материалы 39-й Конференции IEEE по принятию решений и контролю (кат. No 00CH37187), Сидней, NSW, 2000, стр. 2385-2390 vol.3, doi: 10.1109/CDC.2000.914156.

    Входные параметры

    свернуть все

    Динамическая система, заданная как модель динамической системы SISO или MIMO (Control System Toolbox). Динамические системы, которые вы можете использовать, могут быть числовыми моделями LTI в непрерывном времени или дискретном времени, такими как tf, zpk (Control System Toolbox), или ss (Control System Toolbox) модели.

    Когда sys имеет нестабильные полюсы, balred разлагается sys к его стабильным и нестабильным частям и аппроксимируется только стабильная часть. Использовать balredOptions (Control System Toolbox), чтобы задать дополнительные опции для стабильного/нестабильного разложения.

    balred не поддерживает модели данных частотной характеристики, неопределенные и обобщенные модели пространства состояний, модели ПИД или разреженные объекты модели.

    Желаемое количество состояний, заданное в виде целого числа или вектора из целых чисел. Можно попробовать несколько порядки сразу, установив order в вектор целых чисел, в этом случае rys возвращается как массив уменьшенных моделей.

    Можно также использовать сингулярные значения Ханкеля и информацию об ошибках, чтобы выбрать порядок уменьшенной модели на основе требуемой точности модели.

    Дополнительные опции для снижения сложности модели, заданные как набор опций. Можно задать дополнительные опции для устранения состояний, используя абсолютное и относительная погрешность управление, подчеркивая определённые временные или частотные полосы и разделяя стабильные и нестабильные режимы.

    Посмотрите balredOptions (Control System Toolbox), чтобы создать и сконфигурировать набор опций opts.

    Выходные аргументы

    свернуть все

    Модель пониженного порядка, возвращенная как динамическая системная модель или массив динамических системных моделей.

    Дополнительная информация о модели LTI, возвращенная как структура со следующими полями:

    • HSV - сингулярные значения Ханкеля (вклады состояний во входное/выходное поведение). В координатах состояния, которые выравнивают передачу энергии между входами и состояниями между выходами, сингулярные значения Ханкеля измеряют вклад каждого состояния в поведение ввода/вывода. Сингулярные значения Ханкеля предназначены для того, чтобы смоделировать порядок, каковы сингулярные значения для ранга матрицы. В частности, малые состояния сигналов сингулярных значений Ханкеля, которые могут быть отброшены, чтобы упростить модель.

    • ErrorBound - Граница абсолютной или относительной ошибки приближения. info.ErrorBound(J+1) ограничивает ошибку для порядка J.

    • Regularization - ⍴ уровня регуляризации (только для относительной погрешности). Здесь, sys заменяется на [sys,⍴*I] или [sys;⍴*I] что обеспечивает четко определенную относительную погрешность на всех частотах.

    • Rr, Ro - Факторы Холецкого грамма.

    Алгоритмы

    1. balred сначала разлагает G на его стабильную и нестабильную части:

      G=Gs+Gu

    2. Когда вы задаете ErrorBound как absolute, balred использует метод сбалансированного усечения [1], чтобы уменьшить Gs. Это вычисляет сингулярные значения Ханкеля (HSV) σj основанные на граммах управляемости и наблюдаемости. Для порядок <reservedrangesplaceholder0>, абсолютная ошибкаGsGr ограничено 2j=r+1nσj. Здесь n количество состояний в Gs.

    3. Когда вы задаете ErrorBound как relative, balred использует метод сбалансированного стохастического усечения [2], чтобы уменьшить Gs. Для квадратных Gs это вычисляет σj HSV матрицы фазы F=(W')1G где W(s) - стабильный, минимально-фазовый спектральный коэффициент GG’:

      W'(s)W(s)=G(s)G'(s)

      Для порядка <reservedrangesplaceholder0> , относительная погрешностьGs1(GsGr) ограничено:

      j=r+1H(1+σj1σj)12j=r+1nσj

      когда, 2j=r+1nσj1.

    Альтернативная функциональность

    Задача Live Editor

    Уменьшите порядок модели (Control System Toolbox)

    Вопросы совместимости

    расширить все

    Поведение изменено в R2017b

    Ссылки

    [1] Varga, A., «Balancing-Free Square-Root Algorithm for Вычисление сингулярных приближений возмущения», Proc. of 30-го IEEE CDC, Брайтон, Великобритания (1991), pp. 1062-1065.

    [2] Green, M., «A Relative Error Bound for Balanced Stochastic Truncation», Транзакции IEEE по автоматическому управлению, том 33, № 10, 1988

    См. также

    Функции

    Приложения

    Задачи Live Editor

    Представлено до R2006a