File: Anderson.m

package info (click to toggle)
octave-control 4.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,924 kB
  • sloc: fortran: 122,524; cpp: 6,954; objc: 210; makefile: 40; xml: 33; sh: 3
file content (79 lines) | stat: -rw-r--r-- 2,849 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
%% -*- texinfo -*-
%% @deftypefn  {Example Script} {} Anderson
%%
%% Frequency-weighted coprime factorization controller reduction [1].
%%
%% @*@strong{References}@*
%% [1] Anderson, B.D.O.:
%% @cite{Controller Reduction: Concepts and Approaches},
%% IEEE Transactions of Automatic Control, Vol. 34, No. 8, August 1989.
%% @end deftypefn

% ===============================================================================
% Coprime Factorization Controller Reduction     Lukas Reichlin     December 2011
% ===============================================================================
% Reference: Anderson, B.D.O.: Controller Reduction: Concepts and Approaches
%            IEEE Transactions of Automatic Control, Vol. 34, No. 8, August 1989
% ===============================================================================

% Tabula Rasa
clear all, close all, clc

% Plant
A = [ -0.161      -6.004      -0.58215    -9.9835     -0.40727    -3.982       0.0         0.0
       1.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0
       0.0         1.0         0.0         0.0         0.0         0.0         0.0         0.0
       0.0         0.0         1.0         0.0         0.0         0.0         0.0         0.0
       0.0         0.0         0.0         1.0         0.0         0.0         0.0         0.0
       0.0         0.0         0.0         0.0         1.0         0.0         0.0         0.0
       0.0         0.0         0.0         0.0         0.0         1.0         0.0         0.0
       0.0         0.0         0.0         0.0         0.0         0.0         1.0         0.0     ];

B = [  1.0
       0.0
       0.0
       0.0
       0.0
       0.0
       0.0
       0.0 ];

C = [  0.0         0.0         6.4432e-3   2.3196e-3   7.1252e-2   1.0002      0.10455     0.99551 ];

G = ss (A, B, C);

% LQG Design
H = [  0.0         0.0         0.0         0.0         0.55       11.0         1.32       18.0     ];

q1 = 1e-6;
q2 = 100;   % [100, 1000, 2000]

Q = q1 * H.' * H;
R = 1;

W = q2 * B * B.';
V = 1;

F = lqr (G, Q, R)
L = lqe (G, W, V)

% Coprime Factorization using Balanced Truncation Approximation
Kr = arrayfun (@(k) cfconred (G, F, L, k), 8:-1:2, 'uniformoutput', false);  % 'method', 'bfsr-bta'
T = cellfun (@(Kr) feedback (G*Kr), Kr, 'uniformoutput', false);

figure (1)
step (T{:}, 200)

% Coprime Factorization using Singular Perturbation Approximation
Kr = arrayfun (@(k) cfconred (G, F, L, k, 'method', 'bfsr-spa'), 8:-1:2, 'uniformoutput', false);
T = cellfun (@(Kr) feedback (G*Kr), Kr, 'uniformoutput', false);

figure (2)
step (T{:}, 200)

% Frequency-Weighted Coprime Factorization using BTA
Kr = arrayfun (@(k) fwcfconred (G, F, L, k), 8:-1:2, 'uniformoutput', false);
T = cellfun (@(Kr) feedback (G*Kr), Kr, 'uniformoutput', false);

figure (3)
step (T{:}, 300)