3.4.3 時間応答 ― MATLAB


(d) 多入力多出力システムの場合


 制御対象 (2 入力 2 出力システム) の状態空間表現の定義 ...... M ファイル plant2.m (p.63)
clear
format compact

A = [ 0  1  0  0
     -2 -2  1  2
      0  0  0  1
      2  2 -2 -8 ];
B = [ 0  0
      2 -2
      0  0
     -2  4 ];
C = [ 1  0  0  0
      0  0  1  0 ];
D = [ 0  0
      0  0 ];
sysP = ss(A,B,C,D);

 シミュレーション結果の表示 ...... M ファイル plot_data2.m (p.63)
plot(t,y1,'b');
hold on;
plot(t,y2,'r--');
hold off;
grid;
xlabel('t [s]');
ylabel('y1(t) and y2(t)');
legend('y1(t)','y2(t)');

 多入力多出力システムの時間応答 ...... M ファイル response_MIMO.m (p.63)
plant2

t = 0:0.01:20;
% t = linspace(0,20,2001);

% 零入力応答
x0 = [ 1; 0; -1; 0 ];

y = initial(sysP,x0,t);
y1 = y(:,1);
y2 = y(:,2);

figure(1); plot_data2

% 単位ステップ応答
y = step(sysP,t);

y11 = y(:,1,1);  y21 = y(:,2,1);
y12 = y(:,1,2);  y22 = y(:,2,2);

y1 = y11 + y12;
y2 = y21 + y22;

figure(2); plot_data2
>> response_MIMO

 多入力多出力システムの時間応答(グラフのカスタマイズ)
   ...... M ファイル response_MIMO2.m(本には記載していない)
plant2

t = 0:0.01:20;
% t = linspace(0,20,2001);

% === 零入力応答 ==========================================
x0 = [ 1; 0; -1; 0 ];

y = initial(sysP,x0,t);
y1 = y(:,1);
y2 = y(:,2);

% --- グラフのカスタマイズ --------------------------------
figure(1)
plot(t,y1,'b',  'linewidth',2); hold on
plot(t,y2,'r--','linewidth',2); hold off
grid;
 
xlim([0 20]);
ylim([-1 1]);
 
set(gca,'xtick',[0:4:20]);
set(gca,'ytick',[-1:0.5:1]);
 
set(gca,'fontname','times','fontsize',20);
 
xlabel('{\it{t}} [s]','fontname','times','fontsize',22);
ylabel('{\it{y}}_{1}({\it{t}}), {\it{y}}_{2}({\it{t}})','fontname','times','fontsize',22);

legend('{\it{y}}_{1}({\it{t}})','{\it{y}}_{2}({\it{t}})');
set(legend,'fontname','times','fontsize',20);

% === 単位ステップ応答 ===================================
y = step(sysP,t);

y11 = y(:,1,1);  y21 = y(:,2,1);
y12 = y(:,1,2);  y22 = y(:,2,2);

y1 = y11 + y12;
y2 = y21 + y22;

% --- グラフのカスタマイズ --------------------------------
figure(2);
plot(t,y1,'b',  'linewidth',2); hold on
plot(t,y2,'r--','linewidth',2); hold off
grid;
 
xlim([0 20]);
ylim([0 2]);
 
set(gca,'xtick',[0:4:20]);
set(gca,'ytick',[0:0.5:2]);
 
set(gca,'fontname','times','fontsize',20);
 
xlabel('{\it{t}} [s]','fontname','times','fontsize',22);
ylabel('{\it{y}}_{1}({\it{t}}), {\it{y}}_{2}({\it{t}})','fontname','times','fontsize',22);

legend('{\it{y}}_{1}({\it{t}})','{\it{y}}_{2}({\it{t}})',4);
set(legend,'fontname','times','fontsize',20);
>> response_MIMO2