当前位置:文档之家› MATLAB-语言及其用-实验(答案)

MATLAB-语言及其用-实验(答案)

MATLAB-语言及其用-实验(答案)
MATLAB-语言及其用-实验(答案)

M A T L A B-语言及其用-

实验(答案)

-CAL-FENGHAI.-(YICAI)-Company One1

《MATLAB 语言及其用》

实验指导书

目录

实验一 Matlab 使用方法和程序设计........................

实验二控制系统的模型及其转换.............................

实验三控制系统的时域、频域和根轨迹分析...........实验四动态仿真集成环境-Simulink.........................

实验一Matlab使用方法和程序设计一、实验目的

1、掌握Matlab软件使用的基本方法;

2、熟悉Matlab的数据表示、基本运算和程序控制语句

3、熟悉Matlab绘图命令及基本绘图控制

4、熟悉Matlab程序设计的基本方法

二、实验内容:

1、帮助命令

使用help命令,查找 sqrt(开方)函数的使用方法;

在 CommandWindowL里输入help,接在在search里输入sqr即可。sqrt

Square root

Syntax

B = sqrt(X)

Description

B = sqrt(X) returns the square root of each element of the array X. For the elements of X that are negative or complex, sqrt(X) produces complex results.

Tips

See sqrtm for the matrix square root.

Examples

sqrt((-2:2)')

ans =

0 + 1.4142i

0 + 1.0000i

1.0000

1.4142

See Also

nthroot | realsqrt | sqrtm

2、矩阵运算

(1)矩阵的乘法

已知A=[1 2;3 4]; B=[5 5;7 8];

求A^2*B

A=[1 2;3 4];B=[5 5;7 8];

C=A^2*B

>> format compact

C =

105 115

229 251

(2)矩阵除法

已知 A=[1 2 3;4 5 6;7 8 9];

B=[1 0 0;0 2 0;0 0 3];

A\B,A/B

A=[1 2 3;4 5 6;7 8 9];

B=[1 0 0;0 2 0;0 0 3];

C=A\B,D=A/B

C =

1.0e+016 *

0.3152 -1.2609 0.9457

-0.6304 2.5218 -1.8913

0.3152 -1.2609 0.9457

D =

1.0000 1.0000 1.0000

4.0000 2.5000 2.0000

7.0000 4.0000 3.0000

(3)矩阵的转置及共轭转置

已知A=[5+i,2-i,1;6*i,4,9-i];

求A.', A'

A=[5+i,2-i,1;6*i,4,9-i];

B=A.', C=A'

B =

5.0000 + 1.0000i 0 +

6.0000i

2.0000 - 1.0000i 4.0000

1.0000 9.0000 - 1.0000i

C =

5.0000 - 1.0000i 0 -

6.0000i

2.0000 + 1.0000i 4.0000

1.0000 9.0000 + 1.0000i

(4)使用冒号表达式选出指定元素

已知: A=[1 2 3;4 5 6;7 8 9];

求A中第3列前2个元素;A中所有列第2,3行的元素;

A=[1 2 3;4 5 6;7 8 9];

B1=A([1,2],[3])

B2=A([2,3],:)

B1 =

3

6

B2 =

4 5 6

7 8 9

方括号[]

用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列A=magic(4)

B=A(:,[1,2,3])

A=magic(4) A(:,4)=[]

A =

16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 B =

16 2 3 5 11 10 9 7 6 4 14 15 3、多项式

(1)求多项式 42)(3--=x x x p 的根

Y=[1 0 -2 -4]; S=roots(Y)

S =

2.0000 -1.0000 + 1.0000i -1.0000 - 1.0000i

(2)已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] , 求矩阵A 的特征多项式;

把矩阵A 作为未知数代入到多项式中;

A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] P=poly(A) polyval(P,A)

A =

1.2000 3.0000 5.0000 0.9000 5.0000 1.7000 5.0000 6.0000 3.0000 9.0000 0 1.0000 1.0000

2.0000

3.0000

4.0000 P =

1.0000 -6.9000 -77.2600 -86.1300 604.5500 ans =

1.0e+003 *

0.3801 -0.4545 -1.9951 0.4601 -1.9951 0.2093 -1.9951 -2.8880 -0.4545 -4.8978 0.6046 0.4353 0.4353 0.0840 -0.4545 -1.1617 4、基本绘图命令

(1)绘制余弦曲线 y=cos(t),t ∈[0,2π]

(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t ∈[0,2π]

(1)

t=[0:0.05:2*pi]; y=cos(t); plot(t,y)

1

2

3

4

5

6

7

-1-0.8-0.6-0.4-0.200.20.40.60.8

1

(2)

t=[0:0.05:2*pi]; y1=cos(t-0.25); y2=sin(t-0.5); plot(t,y1) hold on plot(t,y2)

5、基本绘图控制

绘制[0,4π]区间上的x1=10sint曲线,并要求:

(1)线形为点划线、颜色为红色、数据点标记为加号;

(2)坐标轴控制:显示范围、刻度线、比例、网络线

(3)标注控制:坐标轴名称、标题、相应文本;

t=[0:0.1:4*pi];

x1=10*sin(t);

plot(t,x1,'r-.+'); %画图,显示红色、点划线、标记加号;

axis([0,15,-10,10]); %定义显示范围,横轴为[0,15],纵轴为[-10,10];

title('曲线x1=10sint'); %显示标题;

xlabel('T轴');

ylabel('X1轴'); %显示坐标轴名称;

set(gca,'xminortick','on');

set(gca,'yminortick','on'); %显示刻度线;

grid on %显示网络线

T 轴

X 1轴

6、基本程序设计

(1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求2的0到n 次幂的和。 (3)@如果想对一个变量x 自动赋值。当从键盘输入y 或Y 时(表示是),x 自动赋为1;

当从键盘输入n 或N 时(表示否),x 自动赋为0;输入其他字符时终止程序。 (1)

s=0;i=0;

while (s<2000) i=i+1; s=s+i; end

i=i-1, s=s-i

s =

1954 i = 62 (2)

sum1=0; for i=0:15

sum1=sum1+2^i; end

disp(['用for 循环所求的值为' num2str(sum1) ]);

sum2=0; i=0; while i<16 sum2=sum2+2^i; i=i+1; end

disp(['用while 循环所求的值为' num2str(sum2) ]);

结果:

用for 循环所求的值为65535 用while 循环所求的值为65535

实验二 控制系统的模型及其转换

一、 实验目的

1、掌握建立控制系统模型的函数及方法;

2、掌握控制系统模型间的转换方法及相关函数;

3、熟悉控制系统模型的连接方法;

4、掌握典型系统模型的生成方法。 二、 实验内容: 1. 控制系统模型 1.1 系统的模型为

2332

4(2)(66)

()(1)(325)

s s s G s s s s s s +++=++++ 试建立系统的传递函数模型。 s=tf('s');

G=4*(s+2)*(s^2+6*s+6)/s/(s+1)^3/(s^3+3*s^2+2*s+5) Transfer function:

4 s^3 + 32 s^2 + 72 s + 48

----------------------------------------------------- s^7 + 6 s^6 + 14 s^5 + 21 s^4 + 24 s^3 + 17 s^2 + 5 s

1.2 已知单输入双输出系统的零极点模型

3(12)4(5)(3)()(3)(4)(5)

s s s G s s s s +????

++?

?=+++ 建立系统的零极点模型。 s=zpk('s'); g11=3*(s+12);

g21=4*(s+5)*(s+3);

G=[g11;g21]/(s+3)/(s+4)/(s+5)

Zero/pole/gain from input to output... 3 (s+12) #1: ----------------- (s+3) (s+4) (s+5)

4 (s+5) (s+3) #2: ----------------- (s+3) (s+4) (s+5)

1.3 给定系统的状态空间表达式,

[]2.8 1.40011.40000()()()1.80.3 1.40.61000.600()0001()x t x t u t y t x t ?--??????????????=+?????----???????????

?=?

建立系统的状态空间模型。

A=[-2.8,-1.4,0,0;1.4,0,0,0;-1.8,-0.3,-1.4,-0.6;0,0,0.6,0]; B=[1;0;1;0]; C=[0,0,0,1]; D=zeros(1,1); G=ss(A,B,C,D)

a =

x1 x2 x3 x4 x1 -2.8 -1.4 0 0 x2 1.4 0 0 0 x3 -1.8 -0.3 -1.4 -0.6 x4 0 0 0.6 0 b =

u1

x1 1

x2 0

x3 1

x4 0

c =

x1 x2 x3 x4

y1 0 0 0 1

d =

u1

y1 0

Continuous-time model.

2. 控制系统模型的转换

2.1 将1.1的模型转换为零极点模型

s=zpk('s');

G=4*(s+2)*(s^2+6*s+6)/s/(s+1)^3/(s^3+3*s^2+2*s+5) Zero/pole/gain:

4 (s+2) (s+1.268) (s+4.732)

--------------------------------------------

s (s+1)^3 (s+2.904) (s^2 + 0.09584s + 1.722)

2.2 将1.2的模型转换为状态空间模型

s=zpk('s');

g1=3*(s+12);

g2=4*(s+5)*(s+3);

G=[g1;g2]/(s+3)/(s+4)/(s+5);

ZTFC=ss(G)

结果

a =

x1 x2 x3

x1 -3 1 0

x2 0 -4 2

x3 0 0 -5

b =

u1

x1 0

x2 0

x3 4

c =

x1 x2 x3 y1 3.375 0.375 0 y2 0 0.5 1 d =

u1 y1 0 y2 0

Continuous-time model.

2.3 将1.3 的模型转换为零极点模型

A=[-2.8,-1.4,0,0;1.4,0,0,0;-1.8,-0.3,-1.4,-0.6;0,0,0.6,0]; B=[1;0;1;0]; C=[0,0,0,1]; D=zeros(1,1); G=ss(A,B,C,D); X=zpk(G)

Zero/pole/gain:

0.6 (s^2 + s + 1.54)

------------------------------ (s+1.4)^2 (s+1.061) (s+0.3394)

3. 控制系统模型的连接:

已知两个系统

[]111

11101012113x x u y x u ?????=+?????-??????=+?

[]222

2201013114x x u y x ?????=+?????--??????=?

求按串联、并联、系统2联接在反馈通道时的负反馈系统的状态方程。 A1=[0,1;1,-2]; B1=[0;1]; C1=[1,3]; D1=[1];

A2=[0,1;-1,-3]; B2=[0;1];

C2=[1,4];

D2=[0];

G1=ss(A1,B1,C1,D1); G2=ss(A2,B2,C2,D2); G=G2*G1

G3=G1+G2

G4=G1/(1+G1*G2)

结果:

a =

x1 x2 x3 x4

x1 0 1 0 0

x2 -1 -3 1 3

x3 0 0 0 1

x4 0 0 1 -2

b =

u1

x1 0

x2 1

x3 0

x4 1

c =

x1 x2 x3 x4

y1 1 4 0 0

d =

u1

y1 0

Continuous-time model.

a =

x1 x2 x3 x4

x1 0 1 0 0

x2 1 -2 0 0

x3 0 0 0 1

x4 0 0 -1 -3

b =

u1

x1 0

x2 1

x3 0

x4 1

c =

x1 x2 x3 x4

y1 1 3 1 4

d =

u1

y1 1

Continuous-time model.

a =

x1 x2 x3 x4 x5 x6 x1 0 1 0 0 0 0 x2 1 -2 -1 -3 -1 -4 x3 0 0 0 1 0 0 x4 0 0 1 -2 1 4 x5 0 0 0 0 0 1 x6 0 0 -1 -3 -2 -7 b =

u1

x1 0

x2 1

x3 0

x4 0

x5 0

x6 1

c =

x1 x2 x3 x4 x5 x6 y1 1 3 -1 -3 -1 -4 d =

u1

y1 1

Continuous-time model. >>

4、典型系统的生成:

4 典型二阶系统

222()2n

n n

H s s s ωξωω=++ 试建立 6,0.1n

ωξ== 时的系统传递函数模型。

s=tf('s');

H=36/(s^2+2.4*s+36) 结果

Transfer function: 36

---------------- s^2 + 2.4 s + 36

5、连续系统的离散化:

对连续系统

6(3)

()(1)(2)(5)

s G s s s s +=

+++

在采样周期 T=0.1 时进行离散化。 s=tf('s');

G=6*(s+3)/((s+1)*(s+2)*(s+5)); G1=c2d(G,0.1) 结果:

Transfer function:

0.02552 z^2 + 0.002704 z - 0.01601 ---------------------------------- z^3 - 2.33 z^2 + 1.786 z - 0.4493

Sampling time: 0.1

实验三 控制系统的时域、频域和根轨迹分析 一、 实验目的

1、掌握如何使用Matlab 进行系统的时域分析

2、掌握如何使用Matlab 进行系统的频域分析

3、掌握如何使用Matlab 进行系统的根轨迹分析 二、 实验内容: 1、时域分析

1.1、某系统的开环传递函数为

43220

()83640G s s s s s

=

+++

试编程求系统在单位负反馈下的阶跃响应曲线,并求最大超调量 >> den=[20]

den =

20

>> num=[1 8 36 40 0]

num =

1 8 36 40 0

>> G=tf(den,num)

Transfer function: 20

--------------------------- s^4 + 8 s^3 + 36 s^2 + 40 s

>> Gc=feedback(G,1)

Transfer function: 20

-------------------------------- s^4 + 8 s^3 + 36 s^2 + 40 s + 20

>> step(Gc)

Step Response

Time (seconds)

A m p l i t u d e

024********

0.2

0.4

0.6

0.8

1

1.2

1.4

1.2、典型二阶系统

222

()2n

n n

G s s s ωξωω=++ 编程求:当 6,n ωξ

=分别取值为0.2、0.4、0.6、0.8、1.0、1.5、2.0时的单位阶跃响应曲线。

>> s=tf('s');

>>G=6^2/(s^2+2*0.2*6*s+6^2); >>G1=6^2/(s^2+2*0.4*6*s+6^2); >>G2=6^2/(s^2+2*0.6*6*s+6^2); >>G3=6^2/(s^2+2*0.8*6*s+6^2); >>G4=6^2/(s^2+2*1.0*6*s+6^2); >>G5=6^2/(s^2+2*1.5*6*s+6^2); >>G6=6^2/(s^2+2*2.0*6*s+6^2); >>step(G,G1,G2,G3,G4,G5,G6); 绘制出的曲线如下:

0.51 1.52 2.53 3.54 4.5

00.2

0.4

0.6

0.8

1

1.2

1.4

1.6

Step Response

Time (seconds)

A m p l i t u d e

1.3、典型二阶系统传递函数为:

222

()2n

n n

G s s s ωξωω=++ 绘制当:0.7,n ξω=分别取2、4、6、8、10、12时的单位阶跃响应曲线。 >>s=tf('s');

>> G=2^2/(s^2+2*0.7*2*s+2^2); >> G1=4^2/(s^2+2*0.7*4*s+4^2); >> G2=6^2/(s^2+2*0.7*6*s+6^2); >> G3=8^2/(s^2+2*0.7*8*s+8^2); >> G4=10^2/(s^2+2*0.7*10*s+10^2); >> G5=12^2/(s^2+2*0.7*12*s+12^2); >> step(G,G1,G2,G3,G4,G5) 绘制出的曲线如下:

0.51 1.52

2.53

3.54

00.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (seconds)

A m p l i t u d e

2、根轨迹分析

根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析使系统稳定的K 值范围。

()()(1)(3)

k

G s H s s s s =

++

>> s=tf('s');

>> G=1/s*(s+1)*(s+3); >> rlocus(G)

绘制出的图形如下:

使得K 值稳定的范围是0

相关主题
文本预览
相关文档 最新文档