Задано системное G
в форме LTI следующие команды приводят систему к любому желаемому порядку, который вы задаете. Судебный вызов основан на его сингулярных значениях Ханкеля.
rng(1234,'twister'); G = rss(30,4,3); % random 30-state model % balanced truncation to models with sizes 12:16 [G1,info1] = balancmr(G,12:16); % Schur balanced truncation by specifying `MaxError' [G2,info2] = schurmr(G,'MaxError',[1,0.8,0.5,0.2]); sigma(G,'b-',G1,'r--',G2,'g-.') legend('G','G1','G2')
График сравнивает исходную модель G
с уменьшенными моделями G1
и G2
.
Чтобы определить, удовлетворена ли теоретическая граница ошибки, вычислите пиковое различие на частотах между усилением исходной системы и уменьшенной системой. Сравните это с привязкой к ошибке, сохраненной в info
структура.
norm(G-G1(:,:,1),'inf')
ans = 2.2965
info1.ErrorBound(1)
ans = 9.7120
Или постройте график ошибки модели по сравнению с ошибкой, связанной с помощью следующих команд:
[sv,w] = sigma(G-G1(:,:,1)); loglog(w,sv,w,info1.ErrorBound(1)*ones(size(w))) xlabel('rad/sec');ylabel('SV'); title('Error Bound and Model Error')