matlab实验报告.docx

上传人:b****5 文档编号:7334666 上传时间:2023-01-23 格式:DOCX 页数:28 大小:248.03KB
下载 相关 举报
matlab实验报告.docx_第1页
第1页 / 共28页
matlab实验报告.docx_第2页
第2页 / 共28页
matlab实验报告.docx_第3页
第3页 / 共28页
matlab实验报告.docx_第4页
第4页 / 共28页
matlab实验报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

matlab实验报告.docx

《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(28页珍藏版)》请在冰豆网上搜索。

matlab实验报告.docx

matlab实验报告

实验一:

MATLAB基本操作

一、实验目的

1、学习掌握MATLAB语言的基本操作方法

2、掌握命令窗口的使用

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

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

二、实验内容和要求

2.b.帮助命令的使用,查找SQRT函数的使用方法

按Start-help-search,输入sqrt

c.矩阵运算

(1)已知A=[12;34];B=[55;78];

求A^2*B

输入A=[12;34];B=[55;78];A^2*B结果为:

ans=

105115

229251

(2)矩阵除法

已知A=[123;456;789];B=[100;020;003];

求A/B,A\B

A/B=

1.00001.00001.0000

4.00002.50002.0000

7.00004.00003.0000

A\B=

1.0e+016*

0.3152-1.26090.9457

-0.63042.5218-1.8913

0.3152-1.26090.9457

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

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

求A.',A'

A=

15.0000+1.0000i2.0000-1.0000i1.0000

0+6.0000i4.00009.0000-1.0000i

A.'=

15.0000+1.0000i0+6.0000i

2.0000-1.0000i4.0000

1.00009.0000-1.0000i

A'=

15.0000-1.0000i0-6.0000i

2.0000+1.0000i4.0000

1.00009.0000+1.0000i

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

已知A=[123;456;789];

求A中第三列前两个元素;A中所有第二行的元素

A=

123

456

789

求A中第三列前两个元素:

A([1,2],3)

ans=

3

6

求A中所有第二行的元素:

A(2,1:

1:

end)

ans=

456

(5)方括号[]

用magic函数生成一个4阶魔方矩阵,删除该矩阵的第四列

magic(4)

ans=

162313

511108

97612

414151

a=ans;a(:

[1,2,3])

ans=

1623

51110

976

41415

3..多项式

(1)求多项式p(X)=x^3-2x-4的根

(2)已知A=[1.2350.9;51.756;3901;1234]

求矩阵A的特征多项式;

求矩阵多项式中未知数为20时的值;

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

(1)a=[1,0,-2,-4]

x=roots(a)

x=

2.0000

-1.0000+1.0000i

-1.0000-1.0000i

(2)求特征多项式系数:

A=[1.2350.9;51.756;3901;1234]

p=poly(A)

p=

1.0000-6.9000-77.2600-86.1300604.5500

求矩阵多项式中未知数为20时的值:

c=polyval(p,20)

c=

7.2778e+004

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

c=polyval(p,A)

c=

1.0e+003*

0.3801-0.4545-1.99510.4601

-1.99510.2093-1.9951-2.8880

-0.4545-4.89780.60460.4353

0.43530.0840-0.4545-1.1617

4、基本程序设计

(1)编写命令文件:

计算1+2+3+……+n<2000;

n=0;s=0;

whiles<2000

n=n+1;

s=s+n;

end

n=n-1

n=

62

(2)编写函数文件:

分别用for和while循环结构编写程序,求2的0到n次幂的和。

function[sum]=mi(n)

sum=0;

form=0:

n

sum=sum+2^m;

end

function[sum]=mi(n)

sum=0;m=0;

whilem<=n

sum=sum+2^m;

m=m+1;

end

(3)如果想对一个变量x自动赋值。

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

s=input('pleaseinputakey:

','s')

while(s=='n'||s=='N'||s=='y'||s=='Y')

if(s=='y'||s=='Y')

clc;

x=1;

disp('x=');

disp(x);

else(s=='n'||s=='N')

clc;

x=0;

disp('x=');

disp(x);

end

s=input('pleaseinputakey:

','s')

clc;

end

回车后显示:

pleaseinputakey:

n

x=

0

pleaseinputakey:

y

退出程序。

实验二:

MATLAB的时域实验

一实验目的

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

2、掌握如何使用MATLAB进行系统的稳定性分析

二、实验内容和要求

1、时域分析

(1)根据下面传递函数模型,回执单位阶跃响应曲线并从图上读取最大超调量,绘制系统的单位脉冲响应、零输入响应曲线。

G(s)=5(s^2+5s+6)/(s^3+6s^2+10s+8)

exp2_1_1.m

s=tf('s');

f1=figure;f2=figure;

gs=5*(s^2+5*s+6)/(s^3+6*s^2+10*s+8);

figure(f1);step(gs)

y=step(gs);

ymax=max(y)

figure(f2);impulse(gs)

t=[0:

0.01:

15];

运行m文件

ymax=

4.0230

figure1:

 

 

figure2:

 

2)典型二阶系统为

取2、4、6、8、10、12的单位阶跃响应。

程序:

>>clear

z=0.7;wn=2:

2:

12;

holdon

fori=1:

length(wn)

sys=tf(wn(i)^2,[1,2*z*wn(i),wn(i)^2]);

step(sys)

end

(3)典型二阶系统为

取0.2、0.4、0.6、0.8、1.0、1.5、2.0的单位阶跃响应。

>>clear

wn=6;z=[0.2:

0.2:

2];

holdon

fori=1:

length(z)

sys=tf(wn^2,[1,2*z(i)*wn,wn^2]);

step(sys)

end

>>holdoff

2、系统稳定性分析

(1)代数法稳定判据(用求分母多项式的根和routh函数两种方法):

已知系统的开环传递函数为:

试对系统闭环判别其稳定性。

程序:

>>clear

k=100;z=-2;p=[0,-1,-20];

[num,den]=zp2tf(z,p,k);

sys=tf(num,den);

P=num+den;

roots(P)

结果:

ans=

-12.8990

-5.0000

-3.1010

因为其值都为负,所以可以判定该系统是稳定的。

(2)根轨迹法判断系统稳定性:

已知一个单位负反馈系统开环传递函数为

试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系统的闭环极点位置,并判断在该点系统闭环的稳定性。

程序:

>>clear

num=[13];

den=conv(conv(conv([10],[15]),[16]),[122]);

sys=tf(num,den);

rlocus(sys)

[k,poles]=rlocfind(sys)

结果:

Selectapointinthegraphicswindow

selected_point=

-3.0036-0.0311i

 

k=

2.8833e+003

(3)Bode图法判断系统稳定性

已知两个单位负反馈系统的开环传递函数分别为:

用Bode图法判断系统闭环的稳定性。

程序1:

>>clear

num=[0002.7];

den=[1540];

s1=tf(num,den);

[Gm,Pm,Wcg]=margin(s1)

margin(s1)

结果;

Gm=

7.4074

 

Pm=

51.7321

 

Wcg=

2.0000

程序2:

>>clear

num=[0002.7];

den=[15-40];

s2=tf(num,den);

margin(s2)

[Gm,Pm,Wcp]=margin(s2)

结果:

Gm=

Inf

 

Pm=

-58.0504

 

Wcp=

NaN

实验三、Matlab的频域实验

一、实验目的:

1、撑握如何使用MATLAB进行系统的时域分析;

2、撑握如何使用MATLAB进行系统的稳定性分析;

二、实验编程与测试

1)典型二阶系统传递函数为

取2、4、6、8、10、12的伯德图。

程序:

>>clear

z=0.7;

wn=2:

2:

12;

holdon

fori=1:

length(wn)

num=wn(i)^2;den=[1,2*z*wn(i),wn(i)^2];

bode(num,den);

end

结果:

(2)典型二阶系统传递函数为

取0.2、0.4、0.6、0.8、1.0、1.5、2.0的伯德图。

程序:

>>clear

wn=6;

z=(0.2:

0.2:

2.0);

holdon

fori=1:

length(z)

num=wn^2;den=[1,2*z(i)*wn,wn^2];

bode(num,den);

end

>>holdoff

结果:

3.根轨迹分析

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

程序:

>>clear

num=[1];

den=conv([110],[12]);

sys=tf(num,den);

rlocus(sys)

[k,poles]=rlocfind(sys)

结果;

实验四、基于Matlab的PID控制器实验

一、实验目的

1、掌握使用MATLAB进行根轨迹法的控制系统设计

2、掌握使用MATLAB进行Bode图法的系统的控制系统设计

3、掌握使用MATLAB进行PID控制器设计

二、实验内容和要求

1.实验内容

(1)练习MATLAB6.5或以上版本

(2)练习掌握MATLAB进行控制系统的设计

2.实验要求:

每位学生独立完成。

三、实验主要仪器设备和材料

装有MATLAB6.5或以上版本的PC机一台。

四、实验方法、步骤及结果测试

1.实验方法:

上机练习。

2.实验步骤:

(1)根据如图二阶系统,

其中,

,当有一阶跃信号作用于系统时,试计算特征量

程序源代码:

Wn=0.5;

Rr=0.7;

numo=[Wn^2];

deno=conv([1,0],[1,2*Wn*Rr]);

[num,den]=cloop(numo,deno,-1);

G=tf(num,den);

step(G);

[Y,T]=step(G);

[pos,tp,tr,ts2]=stepchar(Y,T)

pos=

4.7092

tp=

8.8343

tr=

4.2594

ts2=

11.8317

其中stepchar函数如下

function[pos,tp,tr,ts2]=stepchar(y,t)

%findposandtp

%返回阶跃响应输出y列向量的最大值mp及对应下标值ind

[mp,ind]=max(y);

%求取时间向量的长度dimt

dimt=length(t);

%确定最终的稳定值yss

yss=y(dimt);

pos=100*(mp-yss)/yss;

tp=t(ind);

%findrisetimetr

%确定输出为0.1时的时刻

i=1;j=1;k=1;q=1;

whiley(i)<0.1

i=i+1;

end

t1=t(i);

%确定输出为0.9时的时刻

whiley(j)<0.9

j=j+1;

end

t2=t(j);

tr=t2-t1;

%findts2

i=dimt+1;

n=0;

whilen==0

i=i-1;

ifi==1

n=1;

elseify(i)>=1.02

n=1;

end

end

t1=t(i);i=dimt+1;n=0;

whilen==0

i=i-1;

ify(i)<=0.98

n=1;

end

t2=t(i);

ift1>t2

ts2=t1;

else

ts2=t2;

end

end

(2)设被控对象的传递函数为

试其设计要求:

,相角裕度为50度,幅值裕度为10dB,试确定一个校正装置,以满足性能指标。

程序源代码:

clear;

k=10;%原传递函数的K值

s=tf('s');

G=k/(s*(s+1)*(0.5*s+1));

step(feedback(G,1));%未校正系统的单位阶跃响应(单位负反馈)

figure;

margin(G);

[Gm,Pm,wc,Wcp]=margin(G);

gam=50;

Gc=leadlagc(G,wc,gam,10^0.5,1);%其中10^0.5是根据要求的10db计算得来

figure;

step(feedback(G*Gc,1));

figure;

margin(Gc*G);

未校正前的闭环系统(单位负反馈)的单位阶跃响应,可知该系统并不稳定。

未校正前的开环系统的波特图,由下图可知其相位裕度和幅值裕度均为负值,该系统不稳定

下图为校正后的闭环系统(单位负反馈)的单位阶跃响应。

校正后的开环系统的波特图,由图可知其相位裕度和幅值裕度均为题目要求的值,该系统处于稳定状态

其中leadlagc函数如下:

functionGc=leadlagc(G,Wc,Gam_c,Kv,key)

G=tf(G);

[Gai,Pha]=bode(G,Wc);

Phi_c=sin((Gam_c-Pha-180)*pi/180);

den=G.den{1};

a=den(length(den):

-1:

1);

ii=find(abs(a)<=0);

num=G.num{1};

G_n=num(end);

iflength(ii)>0,

a=a(ii

(1)+1);

else,

a=a

(1);

end

alpha=sqrt((1-Phi_c)/(1+Phi_c));

Zc=alpha*Wc;

Pc=Wc/alpha;

Kc=sqrt((Wc*Wc+Pc*Pc)/(Wc*Wc+Zc*Zc))/Gai;

K1=G_n*Kc*alpha/a;

ifnargin==4,

key=1;

ifPhi_c<0,

key=2;

else,

ifK1

key=3;

end;

end

end

switchkey

case1,

Gc=tf([1Zc]*Kc,[1Pc]);

case2

Kc=1/Gai;

K1=G_n*Kc/a;

Gc=tf([10.1*Wc],[1K1*Gcn

(2)/Kv]);

case3

Zc2=Wc*0.1;

Pc2=K1*Zc2/Kv;

Gcn=Kc*conv([1Zc],[1Zc2]);

Gcd=conv([1Pc],[1Pc2]);

Gc=tf(Gcn,Gcd);

end

(3)PID控制系统的结构如图所示,

试设计串联补偿器,使系统速度稳态误差小于10%,相角裕量45度,并对系统进行仿真。

分析:

PID校正装置的函数模型为Kp[1+1/(Ti*S)+Td*s];

在此可知Kp=10;假设Ti=1.50;Td=0.25;

输入以下程序:

clear;

num1=400;

den1=conv([1,0],[1,30,200]);

G1=tf(num1,den1);

figure;

step(feedback(G1,1),5);%原系统的单位阶跃响应(单位负反馈)

figure;

bode(G1);

grid;

Kv=10;%根据误差小于10%得来

Ti=1.50;%设置参数

Td=0.25;%设置参数

s=tf('s');

Gc=Kv*(Ti*Td*s*s+Ti*s+1)/(Ti*s);%通分后的PID函数模型;

figure;

bode(G1*Gc);

grid;

figure;

step(feedback(G1*Gc,5),2.5);

G=G1*Gc;

未校正前的单位阶跃响应,可知系统稳定

下图为未校正前的开环系统波特图

校正后的开环系统波特图,可知相位裕度刚好为45(-135+180)度,满足题设要求;

下图为校正后的单位阶跃响应,可知虽然超调量有所增加,但阶跃响应的时间明显变短,系统很快进入稳定状态,这在工程上是有利的。

题目要求速度误差小于10%,即在单位斜坡输入的响应误差为小于10%,通过搭建Simulink模块,观察PID校正器的效果,下图中上部分为校正后的单位负反馈模块,其传递函数的num,den参数通过前面的程序获得,即程序中G的分子与分母;中间模块为未校正系统的单位负反馈模块;最下面为通过MUX直接输出单位斜坡的波形,以便与最终结果做比较。

下图中最下面的曲线为为未校正前的单位斜坡输入响应曲线;

上面几乎重合的两条曲线分别为单位斜坡曲线与校正后的响应曲线,可知误差已经很小,几乎与原曲线重合,已经满足题设要求,达到了设计PID的目的。

 

五、思考题

1、PID控制器参数的意义是什么?

答:

典型的PID控制器由三个部分组成,比例环节,积分环节,微分环节。

其数学表达式为Kp[1+1/(Ti*s)+Td*s];Kp为比例系数,Ti为积分环节的积分时间常数,Td为微分环节的微分时间常数。

2、系统根轨迹、Bode图的绘制方法。

答:

根轨迹方法:

一般情况下从以下几个方面进行绘制:

(1)起点(Kg=0);

(2)终点(Kg=Inf);

(3)根轨迹的分支数和它的对称性;

(4)实轴上的根轨迹;

(5)分离点和会合点;

(6)根轨迹的渐近线;

(7)根轨迹的出射角和入射角;

(8)根轨迹与虚轴的交点;

(9)根轨迹的走向。

Bode图的绘制方法:

(1)将系统的传递函数G(s)转化为若干个标准形式的环节的传递函数(即惯性,一阶微分,振荡和二阶微分环节的传递函数中常数项均为1)的乘积形式;

(2)由传递函数G(s)求出频率特性G(jw);

(3)确定各典型环节的转角频率;

(4)作出各环节的对数幅频特性的渐近线;

(5)根据误差修正曲线对渐近线进行修正,得出各环节的对数幅频特性的精确曲线;

(6)将各个环节的对数幅频特性叠加(不包括系统总的增益K);

(7)将叠加后的曲线垂直移动20lgK,得到系统的对数幅频特性;

(8)作出各环节的对数相频特性,然后叠加而得到系统总的对数相频特性;

(9)有延时环节时,对数幅频特性不变,对数相频特性则应加上-tao*w。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1