%図13.7 % clear all; close all; %伝達関数の分子・分母多項式を与える num = [ 0 1 ]; %分子多項式 den = [ 1 2 1 ]; %T=1の場合の分母多項式 %コントローラのパラメータを与える K1 = 1.0; %K=1 K2 = 2.4; %K=2.4 K3 = 3.0; %K=3 %コントローラの分子・分母多項式を与える. numc1 = [ 0 K1 ]; %K=1の場合の分子多項式 numc2 = [ 0 K2 ]; %K=2.4の場合の分子多項式 numc3 = [ 0 K3 ]; %K=3の場合の分子多項式 denc = [ 1 0.1 ]; %分母多項式 %制御対象とコントローラの伝達関数表現を与える sys = tf( num, den ); %制御対象の伝達関数表現 c1 = tf( numc1, denc ); %K=1の場合のコントローラの伝達関数表現 c2 = tf( numc2, denc ); %K=2.4の場合のコントローラの伝達関数表現 c3 = tf( numc3, denc ); %K=3の場合のコントローラの伝達関数表現 %制御対象とコントローラのフィードバック結合を求める sysc1 = feedback( c1*sys, 1 ); %K=1の場合のフィードバック結合 sysc2 = feedback( c2*sys, 1 ); %K=2.4の場合のフィードバック結合 sysc3 = feedback( c3*sys, 1 ); %K=3の場合のフィードバック結合 %時間変数の定義 t = 0:0.01:30; %0から30まで0.01刻み %ステップ応答の計算 [ y1, t1 ] = step( sysc1, t ); %K=1の場合のステップ応答 [ y2, t2 ] = step( sysc2, t ); %K=2.4場合のステップ応答 [ y3, t3 ] = step( sysc3, t ); %K=3の場合のステップ応答 %図13.7(a)のプロット subplot(1,3,1) %複数の図を並べるためのコマンド.1行3列の1列目という意味 plot(t1,y1); %ステップ応答をプロット xlim([0,30]) %横軸(時間軸)の範囲の指定 ylim([-0.5 2.5]) %縦軸の範囲の指定 xticks([0 10 20 30]) %横軸の目盛りの値の設定 yticks([0 1 2]) %縦軸の目盛りの値の設定 grid; %罫線を表示 xlabel('time t [s]'); %横軸のラベル表示 ylabel('y(t)') %縦軸のラベル表示 title('K = 1'); %タイトルの表示 %図13.7(b)のプロット subplot(1,3,2) %複数の図を並べるためのコマンド.1行3列の2列目という意味 plot(t2,y2); %ステップ応答をプロット xlim([0,30]) %横軸(時間軸)の範囲の指定 ylim([-0.5 2.5]) %縦軸の範囲の指定 xticks([0 10 20 30]) %横軸の目盛りの値の設定 yticks([0 1 2]) %縦軸の目盛りの値の設定 grid; %罫線を表示 xlabel('time t [s]'); %横軸のラベル表示 %ylabel('y(t)') %縦軸のラベル表示 title('K = 2.4'); %タイトルの表示 %図13.7(c)のプロット subplot(1,3,3) %複数の図を並べるためのコマンド.1行3列の3列目という意味 plot(t3,y3); %ステップ応答をプロット xlim([0,30]) %横軸(時間軸)の範囲の指定 ylim([-0.5 2.5]) %縦軸の範囲の指定 xticks([0 10 20 30]) %横軸の目盛りの値の設定 yticks([0 1 2]) %縦軸の目盛りの値の設定 grid; %罫線を表示 xlabel('time t [s]'); %横軸のラベル表示 %ylabel('y(t)') %縦軸のラベル表示 title('K = 3'); %タイトルの表示