diff --git a/robust/mult_uncertainty.m b/robust/mult_uncertainty.m index 83e5e67..4494af3 100644 --- a/robust/mult_uncertainty.m +++ b/robust/mult_uncertainty.m @@ -27,8 +27,21 @@ data = frd(info.Bounds(:, 2), w); % use a second-order model I_m_analytic = tf(fitmagfrd(data, 2)); +% For MIMO systems, the division in the expression for I_m doesn't make +% sense +% This is another way to compute it: +opt = wcOptions('MussvOptions','m3'); % for better lower bound +[wcg, wcu, info_num] = wcgain(G-G_nom, w); +[wcg, wcu, info_den] = wcgain(G_nom, w, opt); + +resp_im = info_num.Bounds(:, 2) ./ info_den.Bounds(:, 1); + +data_2 = frd(resp_im, w); +I_m_analytic_2 = tf(fitmagfrd(data_2, 2)); + sigma(I_m, w); hold; semilogx(w, 20*log10(info.Bounds(:, 2)), 'green'); sigma(I_m_analytic, 'red'); +sigma(I_m_analytic_2, 'yellow'); I_m_analytic