echo off;
clear all;
close all;
clc;
echo on;

% --------------------------------------------------------
% [課題 2]
% 次の二次系の伝達関数を考える．
%
%                            1  
%              G(s) = ---------------- (ζ = 0.1, wn = 1)
%                      s^2 + 2ζs + 1
%
% この伝達関数に，入力として正弦波入力
% u(t) = sin(wt) (w = 0.01, 0.1, 0.5, 0.7, 1.0, 2, 10 [rad/s])
% を加えます．そのとき，出力 y(t) がどのように変化するかを，
% 以下の各ステップで表示されるグラフ上で観測し，
% 入力 u(t) と出力 y(t) の "定常状態" における
%
% 　　振幅比 (= 出力の振幅値 / 入力の振幅値)
% 　　位相差 (= 出力の位相 - 入力の位相)
%
% を，それぞれ読み取りなさい．
%
%                                   1
%  u(t) = sin(wt)　→　G(s) = ---------------　→　y(t) = ?
%                             s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

% ----------------------- [ 準備 ] -----------------------
% はじめに，伝達関数 G(s) を定義する．
% ここでは，次のように伝達関数 G(s) を定義している．
% --------------------------------------------------------

pause	% press any key to continue.

wn=1;
zeta=0.1;
[num1,den1]=ord2(wn,zeta);
G=tf(num1,den1);

% 伝達関数 G(s) は，次のように表される．

pause   % press any key to continue.
G

pause   % press any key to continue.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 以下の各ステップでは，入力 u(t) と出力 y(t) の波形が
% プロットされる．入力 u(t) と出力 y(t) の "定常状態" における
% 振幅比と位相差を読み取りなさい．
%
% 読み取る際には，必要に応じてグラフ画面を拡大すること．
% (拡大には，グラフウィンドウの上部にある拡大鏡のマークのついた
% ボタンを利用する)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause   % press any key to continue.

% ----------------------- [step 1] -----------------------
% 定義した伝達関数 G(s) に正弦波入力を加える．
% はじめに，角周波数 w = 0.01 [rad/s] の正弦波入力
%  u(t) = sin(0.01t)
% を，伝達関数 G(s) に加える．
%
%                                      1
%  u(t) = sin(0.01t)　→　G(s) = ---------------　→　y(t) = ?
%                                s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause   % press any key to continue.

figure(1);
t=0:0.05:5000;
u=sin(0.01*t);
[y,t]=lsim(G,u,t);
plot(t,u,'linewidth',2); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-1.2 1.2]);
set(gca,'Xlim',[0 5000]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 0.01 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% プロットされた入力 u(t) と出力 y(t) の波形より，
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比
% を読み取りなさい．
%
% ここでは，位相差がほとんど生じていないことから，
% 位相差を 0 としている．
% また，入力と出力の振幅がほぼ同じであることから，
% 振幅比を 1 (= 0 [dB]) としても差し支えない．
% 
% ここで，出力の振幅と位相が，入力に対してほとんど
% 変化していないことに注意せよ．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.

% ----------------------- [step 2] -----------------------
% 角周波数 w = 0.1 [rad/s] の正弦波入力
%  u(t) = sin(0.1t)
% を，伝達関数 G(s) に加える．
%
%                                     1
%  u(t) = sin(0.1t)　→　G(s) = ---------------　→　y(t) = ?
%                               s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

figure(2);
t=0:0.01:354;
u=sin(0.1*t);
[y,t]=lsim(G,u,t);
plot(t,u,'linewidth',2); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-1.2 1.2]);
set(gca,'Xlim',[0 354]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 0.1 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比と
% 位相差を読み取りなさい．
%
% ここでは，入力と出力の振幅がほぼ同じであることから，
% 振幅比を 1 (= 0 [dB]) としても差し支えない．
%
% ここで，出力の振幅が入力の振幅に対して
% 少し大きくなっていることに注意せよ．
%
% また，出力の位相が入力の位相に対して
% 少し "遅れている" ことにも注意せよ．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.

% ----------------------- [step 3] -----------------------
% 角周波数 w = 0.5 [rad/s] の正弦波入力
%  u(t) = sin(0.5t)
% を，伝達関数 G(s) に加える．
%
%                                     1
%  u(t) = sin(0.5t)　→　G(s) = ---------------　→　y(t) = ?
%                               s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

figure(3);
t=0:0.01:194;
u=sin(0.5*t);
[y,t]=lsim(G,u,t);
plot(t,u); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-2.0 2.0]);
set(gca,'Xlim',[0 194]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 0.5 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比と
% 位相差を読み取りなさい．
%
% ここで，出力の振幅が入力の振幅に対して
% 大きくなっていることに注意せよ．
%
% また，出力の位相が入力の位相に対して
% 少し "遅れている" ことにも注意せよ．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.

% ----------------------- [step 4] -----------------------
% 角周波数 w = 0.7 [rad/s] の正弦波入力
%  u(t) = sin(0.7t)
% を，伝達関数 G(s) に加える．
%
%                                     1
%  u(t) = sin(0.7t)　→　G(s) = ---------------　→　y(t) = ?
%                               s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

figure(4);
t=0:0.01:100;
u=sin(0.7*t);
[y,t]=lsim(G,u,t);
plot(t,u); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-2.0 2.0]);
set(gca,'Xlim',[0 100]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 0.7 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比と
% 位相差を読み取りなさい．
%
% ここで，出力の振幅が入力の振幅に対して
% 大きくなっていることに注意せよ．
%
% また，出力の位相が入力の位相に対して
% "遅れている" ことにも注意せよ．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.

% ----------------------- [step 5] -----------------------
% 角周波数 w = 1.0 [rad/s] の正弦波入力
%  u(t) = sin(1.0t)
% を，伝達関数 G(s) に加える．
%
%                                     1
%  u(t) = sin(1.0t)　→　G(s) = ---------------　→　y(t) = ?
%                               s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

figure(5);
t=0:0.01:100;
u=sin(1.0*t);
[y,t]=lsim(G,u,t);
plot(t,u); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-6 6]);
set(gca,'Xlim',[50 100]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 1.0 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比と
% 位相差を読み取りなさい．
%
% ここで，出力の振幅が入力の振幅に対して
% 大きくなっていることに注意せよ．
%
% また，出力の位相が入力の位相に対して
% "遅れている" ことにも注意せよ．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.

% ----------------------- [step 6] -----------------------
% 角周波数 w = 2 [rad/s] の正弦波入力
%  u(t) = sin(2t)
% を，伝達関数 G(s) に加える．
%
%                                   1
%  u(t) = sin(2t)　→　G(s) = ---------------　→　y(t) = ?
%                             s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

figure(6);
t=0:0.001:100;
u=sin(2.0*t);
[y,t]=lsim(G,u,t);
plot(t,u); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-1.2 1.2]);
set(gca,'Xlim',[65 100]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 2.0 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比と
% 位相差を読み取りなさい．
%
% ここで，出力の振幅が入力の振幅に対して
% 小さくなっていることに注意せよ．
%
% また，出力の位相が入力の位相に対して
% "遅れている" ことにも注意せよ．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.

% ----------------------- [step 7] -----------------------
% 角周波数 w = 10 [rad/s] の正弦波入力
%  u(t) = sin(10t)
% を，伝達関数 G(s) に加える．
%
%                                    1
%  u(t) = sin(10t)　→　G(s) = ---------------　→　y(t) = ?
%                              s^2 + 0.2s + 1
%
% --------------------------------------------------------

pause	% press any key to continue.

figure(7);
t=0:0.001:100;
u=sin(10*t);
[y,t]=lsim(G,u,t);
plot(t,u); hold on;
plot(t,y,'color','r');
set(gca,'Ylim',[-1.2 1.2]);
set(gca,'Xlim',[95 100]);
xlabel('time [s]','fontsize',12);
ylabel('y(t), u(t)','fontsize',12);
title('w = 10 [rad/s]','fontsize',12);
legend('入力 u(t)','出力 y(t)',2);
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 入力 u(t) と出力 y(t) の "定常状態" における振幅比と
% 位相差を読み取りなさい．
%
% ここで，出力の振幅が入力の振幅に対して
% かなり小さくなっていることに注意せよ．
%
% また，出力の位相が入力の位相に対して
% 大きく"遅れている" ことにも注意せよ．
%
% 以上で，Computer Exercise 1 は終了です．
% レポートの提出準備を進めてください．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pause	% press any key to continue.
close all;
