سلام بیا این یک نمونه که قبلا خودم نوشتم مشابه سوال شماست
clear;
close all;
clc;
A=[0 , 1 , 0 , 0
0 , 0 ,-1 , 0
0 , 0 , 1 , 0
0 , 0 , 5 , 0]
B=[0
1
0
2];
C=[1 0 0 0];
D=0;
sys1=ss(A,B,C,D);
G=tf(sys1)
%step(G)
P=pole(sys1);
q=sum(real(P)>0);
if q>0
disp([' ' num2str(q) ' ghotb napayedar darad '])
end
%% ---
OV= input ( ' overshot matlop ra vared konid : ' )
Ts= input ( ' settling time matlop ra vared konid : ' )
a=log(OV)
zita = sqrt(a^2/(a^2+pi^2))
Wn = 4/(zita*Ts)
a = solve(['x^2+2*' num2str(zita) '*' num2str(Wn) '*x+'...
num2str(Wn) '^2=0']);
a =double(fix(1000.*a)/1000);
DesiredPoles=[a(1) a(2)];
K=place(A,B,DesiredPoles);
Acl=A-B*K;
H=ss(Acl,B,C,D);
S=stepinfo(H);
f.SettlingTime=S.SettlingTime
f.Overshoot=S.Overshoot
موفق باشی
clear;
close all;
clc;
A=[0 , 1 , 0 , 0
0 , 0 ,-1 , 0
0 , 0 , 1 , 0
0 , 0 , 5 , 0]
B=[0
1
0
2];
C=[1 0 0 0];
D=0;
sys1=ss(A,B,C,D);
G=tf(sys1)
%step(G)
P=pole(sys1);
q=sum(real(P)>0);
if q>0
disp([' ' num2str(q) ' ghotb napayedar darad '])
end
%% ---
OV= input ( ' overshot matlop ra vared konid : ' )
Ts= input ( ' settling time matlop ra vared konid : ' )
a=log(OV)
zita = sqrt(a^2/(a^2+pi^2))
Wn = 4/(zita*Ts)
a = solve(['x^2+2*' num2str(zita) '*' num2str(Wn) '*x+'...
num2str(Wn) '^2=0']);
a =double(fix(1000.*a)/1000);
DesiredPoles=[a(1) a(2)];
K=place(A,B,DesiredPoles);
Acl=A-B*K;
H=ss(Acl,B,C,D);
S=stepinfo(H);
f.SettlingTime=S.SettlingTime
f.Overshoot=S.Overshoot
موفق باشی