实验一利用matlab进行系统分析基础1.描述线性系统的三种不同方式之间的转换
问题1 已知系统的传递函数为
将其转换为零极点型。
相应的matlab语句为:
num=[2 10];
den=[1 8 19 12];
printsys(num,den,’s’) 回车
[z,p,k]=tf2zp(num,den) 回车
察看语句的执行结果,并说明最后一行程序执行结果的含义;问题2 已知传递函数同上,试将其转换为状态变量型。
Matlab语句为:
Num=[2 10]; den=[1 8 19 12];
[a,b,c,d]=tf2ss(num,den) 回车
对应的状态方程为
式中A,B,C,D对应于程序中的a,b,c,d。
问题3 已知系统的零极点型传递函数为,试将其转换为传递函数型。
Matlab语句:
z=-1;p=[-2 –3 –4 ]; k=5; (回车)
[num, den]=zp2tf(-1, [-2 –3 –4 ],2) (回车)
%观察显示结果
继续输入:
printsys(num,den,’s’) (回车)
记录显示结果。
2.卷积计算
原理:
两个信号卷积公式:
对于两个不规则波形的卷积,依靠手算是很困难的,在Matlab种则变得十分简单。
例如已知两个信号
其中分别表示两个门函数。
求其卷积的matlab程序如下:
t1=1:0.01:2;
f1=ones(size(t1)).*(t1>1);(表示一个高度为1的门函数,时间从t=1到
t=2)
t2=2:0.01:3;
f2=ones(size(t2)).*(t2>2); (表示一个高度为1的门函数,时间从t=2到t=3)
c=conv(f1,f2);(卷积)
t3=3:0.01:5;
subplot(3,1,1),plot(t1,f1);
subplot(3,1,2),plot(t2,f2);
subplot(3,1,3),plot(t3,c);
其结果如图所示
问题1 已知两个信号
试利用matlab计算卷积 (要求显示出波形图)
3.傅立叶变换
例如求下列信号的傅立叶幅度谱
(1)门脉冲信号:
syms t w
ut=sym(‘Heaviside(t+0.5)- Heaviside(t-0.5)’);
Fw=fourier(ut,t,w);
FFw=maple(‘convert’,Fw,’piecewise’);
FFFw=FFw;
FFP=abs(FFFw)
Ezplot(FFP,[-10*pi 10*pi])
Axis([-10*pi 10*pi 0 1]);
(2)三角形脉冲信号
syms w
ut=sym(‘Heaviside(t+0.5)- Heaviside(t-0.5)’);
Fw=fourier(ut,t,w);
FFw=maple(‘convert’,Fw,’piecewise’);
FFFw=FFw* FFw;
FFP=abs(FFFw)
Ezplot(FFP,[-10*pi 10*pi])
Axis([-10*pi 10*pi 0 1]);
(1) (2)
问题:
试利用matlab求1)单边指数信号,2)高斯信号的傅立叶幅度谱。
实验二系统的时间响应分析1. 二阶系统不同阻尼比ξ时的阶跃响应
二阶系统的传递函数为,其阶跃响应可用下列程序做出其单位阶跃和冲激响应的曲线(为简单起见,令),如图(a)(b)所示。
Close
Hold on
zeta=[0.1 0.2 0.4 0.7 1.0];
num=[1]
t=0:.01:12;
for k=1:5
den=[1 2*zeta(k) 1];
printsys(num, den,’s’);
[y(:, k), x]=step(num, den,1);
plot(t,y(:, k));
end
figure;
for k=1:5
den =[1 Zeta(k) 1];
[y(:, k), x]=impulse(num, den,t);
plot(t,y(:, k)); hold on
end
2. 二阶系统的时域性能指标
a.调整时间t s;b. 上升时间t r;c. 超调量σ;close all;
zeta=0.05:0.05:1;
num=[1];
ts=0;
w=0.02:0.02:2;
jw=j*w;
for n=1:20;
den=[1 2*zeta(n) 1];
t=0.3:0.3:30;
y=step(num,den,1);
for j=1:99;
k=100-j;
if(((y(k)-0.95)*(y(k+1)-0.95))<=0)
ts(n)=t(k)+0.3*((0.95-y(k+1))/(y(k+1)-y(k)));
break;
else if (((y(k)-1.05)*(y(k+1)-1.05))<=0)
ts(n)=t(k)+0.3*((1.05-y(k+1))/(y(k+1)-y(k)));
break;
end
end
t=0.03:0.03:3;
y=step(num,den,t);
for k=1:99;
tt=k+1;
if (((y(k)-0.1)*(y(tt)-0.1))<=0) trb=t(k)+0.03*((0.1-y(k))/(y(tt)-y(k)));
else if (((y(k)-0.9)*(y(tt)-0.9))<=0) tre=t(k)+0.03*((0.9-y(k))/(y(tt)-y(k)));
break;
end
end
tr(n)=tre-trb;
end
hold on
plot(zeta,ts); xlabel(‘Ts’);
figure;
plot(zeta,tr);xlabel(‘Tr’);
zeta=0.05:0.05:1;
forn=1:20;
overshoot(n)=exp(-1*pi*zeta(n)/(sqrt(1.0-zeta(n).^2)+eps));
end
figure; plot(zeta,overshoot);xlabel(‘Overshoot’);
hold off
clf
3. 三种控制方式的时间响应比较
(1)比例控制;(2)比例与导树控制(正向传输零点);(3)比例-导数(反馈回路有零点)控制。
(a)(b)(c)图示系统的正向传递函数为
系统1的正向传递函数为
系统2的正向传递函数为
系统3的正向传递函数为,反馈传递函数为(1+0.8s)用matlab来分析这3个系统的阶跃响应。
三种控制方式下的单位阶跃响应可如下求取:
num=5;den=[5 1 0];
printsys(num,den,’s’)
(运行结果:)
num/den=
sign=-1;
[num1,den1]=cloop(num,den,sign);
printsys(num1,den1,’s’)
(运行结果:)
num/den=
subplot(2,1,1);
step(num1,den1);
hold on
num=[4 5];den=[5 1 0];
printsys(num,den,’s’)
(运行结果:)
num/den=
sign=-1;
[num2,den2]=cloop(num,den,sign);
printsys(num2,den2,’s’)
(运行结果:)
num/den=
step(num2,den2);
num=[0 5];den=[5 1 0];
printsys(num,den,’s’)
(运行结果:)
num/den=
numf=[0.8 1];denf=[0 1];sign=-1;
[num3,den3]=feedback(num,den,numf,denf,sign); printsys(num3,den3,’s’)
(运行结果:)
num/den=
step(num3,den3);
axis([0 10 0 1.8]);
subplot(2,1,2);
hold on
impulse(num1,den1);
impulse(num2,den2);
impulse(num3,den3);
axis([0 10 –1 2]);
hold off
实验结果:。