Why does relative error model reduction using the BSTSCHMR and BSTSCHML functions in the Robust Control Toolbox 2.0.10 (R14) produce wrong results?

1 回表示 (過去 30 日間)
I am using the Robust Control Toolbox to reduce my system model using BST relative error model reduction. However, I find that the resulting reduced order system found with the BSTSCHMR exhibit significant errors when compared with the original system.

採用された回答

MathWorks Support Team
MathWorks Support Team 2009 年 6 月 27 日
This phenomenon is a result of ill-conditioned system which causes numerical inaccuracies in the model reduction algorithm.
This is often a result of a nearly singular D matrix. In this case, adjustments to this D matrix may result in a better solution. However, this may distort the systems high frequency dynamics. This procedure is shown in the following code (variables "sys" and num_reduced_states must be defined in the workspace):
% With a system with a nearly singular D matrix
% Assume sys.d = 1e-5
sys1 = sys;
sys1.d = 1e-2; %this will disregard the higher frequency dynamics
[sysr1,aug,hsv] = bstschml(sys1,1,num_reduced_states);
sysr1a = sysr1;
sysr1a.d = sys.d; % put D back to original value
% Now compare the frequency response
bode(sys, sysr1, sysr1a);
As an alternative, if you have the Mu-Analysis and Synthesis Toolbox, you can first try rebalancing the system using the SRELBAL function before performing this model reduction. This would be done as follows:
[a,b,c,d] = ssdata(sys);
sysmat = pck(a,b,c,d);
[sysmatrb,sigrel] = srelbal(sysmat);
[a2,b2,c2,d2] = unpck(sysmatrb);
sys2 = ss(a2,b2,c2,d2);
[sysr2,aug,hsv] = bstschml(sys,1,num_reduced_states);
% Now compare the frequency response
bode(sys,sysr2);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDynamic System Models についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by