文档视界 最新最全的文档下载
当前位置:文档视界 › (最新版)MATLAB实验报告

(最新版)MATLAB实验报告

(最新版)MATLAB实验报告
(最新版)MATLAB实验报告

实验一典型环节的MATLAB仿真

一、实验目的

1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。

2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。

3.定性了解各参数变化对典型环节动态特性的影响。

二、SIMULINK的使用

MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。

1.运行MATLAB软件,在命令窗口栏“>>”提示符下键入simulink命令,按Enter 键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK仿真环境下。

2.选择File菜单下New下的Model命令,新建一个simulink仿真环境常规模板。

3.在simulink仿真环境下,创建所需要的系统。

以图1-2所示的系统为例,说明基本设计步骤如下:

1)进入线性系统模块库,构建传递函数。点击simulink下的“Continuous”,再将右边窗口中“Transfer Fen”的图标用左键拖至新建的“untitled”窗口。

2)改变模块参数。在simulink仿真环境“untitled”窗口中双击该图标,即可改变传递函数。其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;设置完成后,选择OK,即完成该模块的设置。

3)建立其它传递函数模块。按照上述方法,在不同的simulink的模块库中,建立系统所需的传递函数模块。例:比例环节用“Math”右边窗口“Gain”的图标。

4)选取阶跃信号输入函数。用鼠标点击simulink下的“Source”,将右边窗口中“Step”图标用左键拖至新建的“untitled”窗口,形成一个阶跃函数输入模块。

5)选择输出方式。用鼠标点击simulink下的“Sinks”,就进入输出方式模块库,通常选用“Scope”的示波器图标,将其用左键拖至新建的“untitled”窗口。

6)选择反馈形式。为了形成闭环反馈系统,需选择“Math”模块库右边窗口“Sum”图标,并用鼠标双击,将其设置为需要的反馈形式(改变正负号)。

7)连接各元件,用鼠标划线,构成闭环传递函数。

8)运行并观察响应曲线。用鼠标单击工具栏中的“”按钮,便能自动运行仿真环

境下的系统框图模型。运行完之后用鼠标双击“Scope ”元件,即可看到响应曲线。

三、实验原理

1.比例环节的传递函数为 K R K R R R Z Z s G 200,1002)(211212==-=-=-=

其对应的模拟电路及SIMULINK 图形如图1-3所示。

2.惯性环节的传递函数为

uf C K R K R s C R R R Z Z s G 1,200,10012.021)(121121212===+-=+-=-=

其对应的模拟电路及SIMULINK 图形如图1-4所示。

3.积分环节(I)的传递函数为

uf C K R s s C R Z Z s G 1,1001.011)(111112==-=-=-=

其对应的模拟电路及SIMULINK 图形如图1-5所示。

4.微分环节(D)的传递函数为

uf C K R s s C R Z Z s G 10,100)(111112==-=-=-=

其对应的模拟电路及SIMULINK 图形如图1-6所示。

5.比例+微分环节(PD )的传递函数为

)11.0()1()(111

212+-=+-=-=s s C R R R Z Z s G uf C C uf

C K R R 01.010,10012121=<<=== 其对应的模拟电路及SIMULINK 图形如图1-7所示。

6.比例+积分环节(PI )的传递函数为

)11(1)(11212s

R s C R Z Z s G +-=+-=-= 其对应的模拟电路及SIMULINK 图形如图1-8所示。

四、实验内容

按下列各典型环节的传递函数,建立相应的SIMULINK仿真模型,观察并记录其单位阶跃响应波形。

①比例环节和;

②惯性环节和

③积分环节

④微分环节

⑤比例+微分环节(PD)和

⑥比例+积分环节(PI)和

五、实验报告

1.画出各典型环节的SIMULINK仿真模型。

2. 记录各环节的单位阶跃响应波形,并分析参数对响应曲线的影响。

3. 写出实验的心得与体会。

六、预习要求

1.熟悉各种控制器的原理和结构,画好将创建的SIMULINK图形。

2.预习MATLAB中SIMULINK的基本使用方法。

实验二线性系统时域响应分析

一、实验目的

1.熟练掌握step( )函数和impulse( )函数的使用方法,研究线性系统在单位阶跃、单位脉冲及单位斜坡函数作用下的响应。

2.通过响应曲线观测特征参量和对二阶系统性能的影响。

3.熟练掌握系统的稳定性的判断方法。

二、基础知识及MATLAB函数

(一)基础知识

时域分析法直接在时间域中对系统进行分析,可以提供系统时间响应的全部信息,具有直观、准确的特点。为了研究控制系统的时域特性,经常采用瞬态响应(如阶跃响应、脉冲响应和斜坡响应)。本次实验从分析系统的性能指标出发,给出了在MATLAB环境下获取系统时域响应和分析系统的动态性能和稳态性能的方法。

用MATLAB求系统的瞬态响应时,将传递函数的分子、分母多项式的系数分别以s 的降幂排列写为两个数组num、den。由于控制系统分子的阶次m一般小于其分母的阶

次n,所以num中的数组元素与分子多项式系数之间自右向左逐次对齐,不足部分用零补齐,缺项系数也用零补上。

1.用MATLAB求控制系统的瞬态响应

1)阶跃响应

求系统阶跃响应的指令有:

step(num,den) 时间向量t的范围由软件自动设定,阶跃响应曲线随即绘出

step(num,den,t) 时间向量t的范围可以由人工给定(例如t=0:0.1:10)

[y,x]=step(num,den) 返回变量y为输出向量,x为状态向量在MATLAB程序中,先定义num,den数组,并调用上述指令,即可生成单位阶跃输入信号下的阶跃响应曲线图。

考虑下列系统:

该系统可以表示为两个数组,每一个数组由相应的多项式系数组成,并且以s的降幂排列。则MATLAB的调用语句:

num=[0 0 25]; %定义分子多项式

den=[1 4 25]; %定义分母多项式

step(num,den)%调用阶跃响应函数求取单位阶跃响应曲线grid %画网格标度线

xlabel(‘t/s’),ylabel(‘c(t)’) %给坐标轴加上说明

title(‘Unit-step Respinse of G(s)=25/(s^2+4s+25)’) %给图形加上标题名

则该单位阶跃响应曲线如图2-1所示:

为了在图形屏幕上书写文本,可以用text命令在图上的任何位置加标注。例如:text(3.4,-0.06,’Y1’) 和text(3.4,1.4,’Y2’)

第一个语句告诉计算机,在坐标点x=3.4,y=-0.06上书写出’Y1’。类似地,第二个语句告诉计算机,在坐标点x=3.4,y=1.4上书写出’Y2’。

若要绘制系统t在指定时间(0-10s)内的响应曲线,则用以下语句:

num=[0 0 25];

den=[1 4 25];

t=0:0.1:10;

step(num,den,t)

即可得到系统的单位阶跃响应曲线在0-10s间的部分,如图2-2所示。

2)脉冲响应

① 求系统脉冲响应的指令有:

impulse (num,den) 时间向量t 的范围由软件自动设定,阶跃响应曲线随即绘

impulse (num,den,t) 时间向量t 的范围可以由人工给定(例如t=0:0.1:10)

[y,x]=impulse(num,den) 返回变量y 为输出向量,x 为状态向量

[y,x,t]=impulse(num,den,t) 向量t 表示脉冲响应进行计算的时间

例:试求下列系统的单位脉冲响应:

在MATLAB 中可表示为

num=[0 0 1];

den=[1 0.2 1];

impulse(num,den)

grid

title(‘Unit -impulse Response of G(s)=1/(s ^2+0.2s+1)’)

由此得到的单位脉冲响应曲线如图2-3所示:

② 求脉冲响应的另一种方法

应当指出,当初始条件为零时,G (s)的单位脉冲响应与sG(s)的单位阶跃响应相同。

考虑在上例题中求系统的单位脉冲响应,因为对于单位脉冲输入量,R(s)=1所以

s

s s s s s s G s C s R s C 112.012.01)()()()(22?++=++=== 因此,可以将G(s)的单位脉冲响应变换成sG(s)的单位阶跃响应。

向MATLAB 输入下列num 和den ,给出阶跃响应命令,可以得到系统的单位脉冲

响应曲线如图2-4所示。

num=[0 1 0];

den=[1 0.2 1];

step(num,den)

grid

title(‘Unit -step Response of

sG(s)=s/(s^2+0.2s+1)’)

3) 斜坡响应

MATLAB 没有直接调用求系统斜坡响应的功能指令。在求取斜坡响应时,通常利

用阶跃响应的指令。基于单位阶跃信号的拉氏变换为1/s ,而单位斜坡信号的拉氏变换

为1/s 2。因此,当求系统G(s)的单位斜坡响应时,可以先用s 除G(s),再利用阶跃响应

命令,就能求出系统的斜坡响应。

例如,试求下列闭环系统的单位斜坡响应。

对于单位斜坡输入量,R(s)=1/s 2 ,因此

s

s s s s s s s C 1)1(1111)(222?++=?++= 在MATLAB 中输入以下命令,得到如图2-5所示的响应曲线:

num=[0 0 0 1];

den=[1 1 1 0];

step(num,den)

title(‘Unit -Ramp Response Cuve for System G(s)=1/(s^2+s+1)’)

2. 特征参量和对二阶系统性能的影响

标准二阶系统的闭环传递函数为:

二阶系统的单位阶跃响应在不同的特征参量下有不同的响应曲线。

1) 对二阶系统性能的影响

设定无阻尼自然振荡频率,考虑5种不同的值: =0,0.25,0.5,1.0和 2.0,利用

MATLAB 对每一种求取单位阶跃响应曲线,分析参数对系统的影响。

为便于观测和比较,在一幅图上绘出5条响应曲线(采用“hold ”命令实现)。

num=[0 0 1]; den1=[1 0 1]; den2=[1 0.5 1];

den3=[1 1 1]; den4=[1 2 1]; den5=[1 4 1];

t=0:0.1:10; step(num,den1,t)

grid

text(4,1.7,’Zeta=0’); hold

step(num,den2,t)

text (3.3,1.5,’0.25’)

step(num,den3,t)

text (3.5,1.2,’0.5’)

step(num,den4,t)

text (3.3,0.9,’1.0’)

step(num,den5,t)

text (3.3,0.6,’2.0’)

title(‘Step-Response Curves for G(s)=1/[s^2+2(zeta)s+1]’)

由此得到的响应曲线如图2-6所示:

2)对二阶系统性能的影响

同理,设定阻尼比时,当分别取1,2,3时,利用MATLAB求取单位阶跃响应曲线,分析参数对系统的影响。

num1=[0 0 1];den1=[1 0.5 1];

t=0:0.1:10; step(num1,den1,t);

grid; hold on

text(3.1,1.4,’wn=1’)

num2=[0 0 4]; den2=[1 1 4];

step(num2,den2,t); hold on

text(1.7,1.4,’wn=2’)

num3=[0 0 9]; den3=[1 1.5 9];

step(num3,den3,t); hold on

text(0.5,1.4,’wn=3’)

由此得到的响应曲线如图2-7所示:

3.系统稳定性判断

1)直接求根判稳roots()

控制系统稳定的充要条件是其特征方程的根均具有负实部。因此,为了判别系统的稳定性,就要求出系统特征方程的根,并检验它们是否都具有负实部。MATLAB中对多项式求根的函数为roots()函数。

若求以下多项式的根,则所用的MATLAB指令为:

>> roots([4])

ans =

-4.0000

-3.0000

-2.0000

-1.0000

特征方程的根都具有负实部,因而系统为稳定的。

2)劳斯稳定判据routh()

劳斯判据的调用格式为:[r, info]=routh(den)

该函数的功能是构造系统的劳斯表。其中,den为系统的分母多项式系数向量,r 为返回的routh表矩阵,info为返回的routh表的附加信息。

以上述多项式为例,由routh判据判定系统的稳定性。

den=[4];

[r,info]=routh(den)

r=

1 35 24

10 50 0

30 24 0

42 0 0

24 0 0

info=

[ ]

由系统返回的routh表可以看出,其第一列没有符号的变化,系统是稳定的。

3)赫尔维茨判据hurwitz()

赫尔维茨的调用格式为:H=hurwitz(den)。该函数的功能是构造hurwitz矩阵。其中,den为系统的分母多项式系数向量。

以上述多项式为例,由hurwitz判据判定系统的稳定性。

>>den=[4]; H=hurwitz(den)

H=

10 50 0 0

1 35 24 0

0 10 50 0

0 1 35 24

由系统返回的hurwitz矩阵可以看出,系统是稳定的。与前面的分析结果完全一致。

注意:routh()和hurwitz()不是MATLAB中自带的功能函数,须加载ctrllab3.1文件夹(自编)才能运行。

三、实验内容

1.观察函数step( )和impulse( )的调用格式,假设系统的传递函数模型为 1

46473)(2342++++++=s s s s s s s G 可以用几种方法绘制出系统的阶跃响应曲线?试分别绘制。

2.对典型二阶系统

1)分别绘出,分别取0,0.25,0.5,1.0和2.0时的单位阶跃响应曲线,分析参数对系

统的影响,并计算=0.25时的时域性能指标。

2)绘制出当=0.25,分别取时单位阶跃响应曲线,分析参数对系统的影响。

3.系统的特征方程式为,试用三种判稳方式判别该系统的稳定性。

4.单位负反馈系统的开环模型为

)

256)(4)(2()(2++++=s s s s K s G 试分别用劳斯稳定判据和赫尔维茨稳定判据判断系统的稳定性,并求出使得闭环系统稳

定的K 值范围。

四、实验报告

1.根据内容要求,写出调试好的MATLAB 语言程序,及对应的MATLAB 运算结果。

2. 记录各种输出波形,根据实验结果分析参数变化对系统的影响。

3.总结判断闭环系统稳定的方法,说明增益K 对系统稳定性的影响。

4.写出实验的心得与体会。

五、预习要求

1. 预习实验中基础知识,运行编制好的MATLAB 语句,熟悉MATLAB 指令及step( )

和impulse( )函数。

2. 结合实验内容,提前编制相应的程序。

3.思考特征参量和对二阶系统性能的影响。

4.熟悉闭环系统稳定的充要条件及学过的稳定判据。

实验三 线性系统的根轨迹

一、实验目的

1. 熟悉MATLAB 用于控制系统中的一些基本编程语句和格式。

2. 利用MATLAB 语句绘制系统的根轨迹。

3. 掌握用根轨迹分析系统性能的图解方法。

4. 掌握系统参数变化对特征根位置的影响。

二、基础知识及MATLAB 函数

根轨迹是指系统的某一参数从零变到无穷大时,特征方程的根在s 平面上的变化轨

迹。这个参数一般选为开环系统的增益K 。课本中介绍的手工绘制根轨迹的方法,只能

绘制根轨迹草图。而用MATLAB 可以方便地绘制精确的根轨迹图,并可观测参数变化

对特征根位置的影响。

假设系统的对象模型可以表示为

n

n n n m m m m a s b s a s b s b s b s b K s KG s G ++++++++==--+-11111210)()( 系统的闭环特征方程可以写成

对每一个K 的取值,我们可以得到一组系统的闭环极点。如果我们改变K 的数值,则

可以得到一系列这样的极点集合。若将这些K 的取值下得出的极点位置按照各个分支

连接起来,则可以得到一些描述系统闭环位置的曲线,这些曲线又称为系统的根轨迹。

1) 绘制系统的根轨迹rlocus ()

MATLAB 中绘制根轨迹的函数调用格式为:

rlocus(num,den) 开环增益k 的范围自动设定。

rlocus(num,den,k) 开环增益k 的范围人工设定。

rlocus(p,z) 依据开环零极点绘制根轨迹。

r=rlocus(num,den) 不作图,返回闭环根矩阵。

[r,k]=rlocus(num,den) 不作图,返回闭环根矩阵r 和对应的开环增益向量

k 。

其中,num,den 分别为系统开环传递函数的分子、分母多项式系数,按s 的降幂排

列。K 为根轨迹增益,可设定增益范围。

例3-1:已知系统的开环传递函数,绘制系统的根轨迹的MATLAB 的调用语句如

下:

num=[1 1]; %定义分子多项式

den=[1 4 2 9]; %定义分母多项式

rlocus (num,den) %绘制系统的根轨迹

grid %画网格标度线

xlabel(‘Real Axis ’),ylabel(‘Imaginary Axis ’) %给坐标轴加上说明

title(‘Root Locus ’) %给图形加上标题名

则该系统的根轨迹如图3-1所示:

若上例要绘制K 在(1,10)的根轨迹图,则此时的MATLAB 的调用格式如下,

对应的根轨迹如图3-2所示。

num=[1 1];

den=[1 4 2 9];

k=1:0.5:10;

rlocus (num,den,k)

2) 确定闭环根位置对应增益值K 的函数rlocfind ()

在MATLAB 中,提供了rlocfind 函数获取与特定的复根对应的增益K 的值。在

求出的根轨迹图上,可确定选定点的增益值K 和闭环根r (向量)的值。该函数的调用

格式为:

[k,r]=rlocfind(num,den)

执行前,先执行绘制根轨迹命令rlocus (num,den ),作出根轨迹图。执行rlocfind

命令时,出现提示语句“Select a point in the graphics window ”,即要求在根轨迹

图上选定闭环极点。将鼠标移至根轨迹图选定的位置,单击左键确定,根轨迹图上出现

“+”标记,即得到了该点的增益K 和闭环根r 的返回变量值。

例3-2:系统的开环传递函数为253865)(232+++++=*

s s s s s K s G ,试求:(1)系统的根轨迹;(2)系统稳定的K 的范围;(3)K=1时闭环系统阶跃响应曲线。则此时的MATLAB

的调用格式为:

G=tf([1,5,6],[]);

rlocus (G); %绘制系统的根轨迹

[k,r]=rlocfind(G) %确定临界稳定时的增益值k 和对应的极点

r

G_c=feedback(G ,1); %形成单位负反馈闭环系统

step(G_c) %绘制闭环系统的阶跃响应曲线

则系统的根轨迹图和闭环系统阶跃响应曲线如图3-2所示。

其中,调用rlocfind ()函数,求出系统与虚轴交点的K 值,可得与虚轴交点的K

值为0.0264,故系统稳定的K 的范围为。

3)绘制阻尼比和无阻尼自然频率的栅格线sgrid( )

当对系统的阻尼比和无阻尼自然频率有要求时,就希望在根轨迹图上作等或等线。MATLAB中实现这一要求的函数为sgrid( ),该函数的调用格式为:

sgrid(,) 已知和的数值,作出等于已知参数的等值线。

sgrid(‘new’) 作出等间隔分布的等和网格线。

例3-3:系统的开环传递函数为,由rlocfind函数找出能产生主导极点阻尼=0.707的合适增益,如图3-3(a)所示。

G=tf(1,[conv([1,1],[1,2]),0]);

zet=[0.1:0.2:1];wn=[1:10];

sgrid(zet,wn);hold on;rlocus(G)

[k,r]=rlocfind(G)

Select a point in the graphics window

selected_point =

-0.3791 + 0.3602i

k =

0.6233

r =

-2.2279

-0.3861 + 0.3616i

-0.3861 - 0.3616i

同时我们还可以绘制出该增益下闭环系统的阶跃响应,如图3-3(b)所示。事实上,等或等线在设计系补偿器中是相当实用的,这样设计出的增益K=0.6233将使得整个系统的阻尼比接近0.707。由下面的MATLAB语句可以求出主导极点,即r(2.3)点的阻尼比和自然频率为

G_c=feedback(G,1);

step(G_c)

dd0=poly(r(2:3,:));

wn=sqrt(dd0(3));zet=dd0(2)/(2*wn);[zet,wn]

ans =

0.7299 0.5290

我们可以由图3-3(a)中看出,主导极点的结果与实际系统的闭环响应非常接近,

设计的效果是令人满意的。

4) 基于根轨迹的系统设计及校正工具rltool

MATLAB 中提供了一个系统根轨迹分析的图形界面,在此界面可以可视地在整个

前向通路中添加零极点(亦即设计控制器),从而使得系统的性能得到改善。实现这一

要求的工具为rltool ,其调用格式为:

rltool 或 rltool(G)

例3-4:单位负反馈系统的开环传递函数

)

50)(20)(5(125.0)(2++++=s s s s s s G 输入系统的数学模型,并对此对象进行设计。

den=[conv([1,5],conv([1,20],[1,50])),0,0];

num=[1,0.125];

G=tf(num,den);

rltool(G)

该命令将打开rltool 工具的界面,显示原开环模型的根轨迹图,如图3-4(a )所

示。单击该图形菜单命令Analysis 中的Response to Step Command 复选框,则将打

开一个新的窗口,绘制系统的闭环阶跃响应曲线,如图3-4(b )所示。可见这样直接

得出的系统有很强的振荡,就需要给这个对象模型设计一个控制器来改善系统的闭环性

能。

单击界面上的零点和极点添加的按钮,可以给系统添加一对共轭复极点,两个稳

定零点,调整它们的位置,并调整增益的值,通过观察系统的闭环阶跃响应效果,则可

以试凑地设计出一个控制器

)

84.03.61)(84.03.61()26.10)(31.38(29.181307)(j s j s s s s G C -+++++= 在此控制器下分别观察系统的根轨迹和闭环系统阶跃响应曲线。可见,rltool 可

以作为系统综合的实用工具,在系统设计中发挥作用。

三、实验内容

1.请绘制下面系统的根轨迹曲线

)

136)(22()(22++++=s s s s s K s G )

10)(10012)(1()12()(2+++++=s s s s s K s G )

11.0012.0)(10714.0()105.0()(2++++=s s s s K s G 同时得出在单位阶跃负反馈下使得闭环系统稳定的K 值的范围。

2. 在系统设计工具rltool 界面中,通过添加零点和极点方法,试凑出上述系统,

并观察增加极、零点对系统的影响。

四、实验报告

1.根据内容要求,写出调试好的MATLAB 语言程序,及对应的结果。

2. 记录显示的根轨迹图形,根据实验结果分析根轨迹的绘制规则。

3. 根据实验结果分析闭环系统的性能,观察根轨迹上一些特殊点对应的K 值,确

定闭环系统稳定的范围。

4.根据实验分析增加极点或零点对系统动态性能的影响。

5.写出实验的心得与体会。

五、预习要求

1. 预习实验中的基础知识,运行编制好的MATLAB 语句,熟悉根轨迹的绘制函数

rlocus()及分析函数rlocfind(),sgrid()。

2. 预习实验中根轨迹的系统设计工具rltool ,思考该工具的用途。

3. 掌握用根轨迹分析系统性能的图解方法,思考当系统参数K 变化时,对系统稳

定性的影响。

4.思考加入极点或零点对系统动态性能的影响。

实验四 线性系统的频域分析

一、实验目的

1.掌握用MATLAB 语句绘制各种频域曲线。

2.掌握控制系统的频域分析方法。

二、基础知识及MATLAB 函数

频域分析法是应用频域特性研究控制系统的一种经典方法。它是通过研究系统对正弦信号下的稳态和动态响应特性来分析系统的。采用这种方法可直观的表达出系统的频率特性,分析方法比较简单,物理概念明确。

1.频率曲线主要包括三种:Nyquist图、Bode图和Nichols图。

1)Nyquist图的绘制与分析

MATLAB中绘制系统Nyquist图的函数调用格式为:

nyquist(num,den)频率响应w的范围由软件自动设定

nyquist(num,den,w)频率响应w的范围由人工设定

[Re,Im]= nyquist(num,den) 返回奈氏曲线的实部和虚部向量,不作图

例4-1:已知系统的开环传递函数为,试绘制Nyquist图,并判断系统的稳定性。

num=[2 6];

den=[1 2 5 2];

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

nyquist(num,den)

极点的显示结果及绘制的Nyquist图如图4-1所示。由于系统的开环右根数P=0,系统的Nyquist曲线没有逆时针包围(-1,j0)点,所以闭环系统稳定。

p =

-0.7666 + 1.9227i

-0.7666 - 1.9227i

-0.4668

若上例要求绘制间的Nyquist图,则对应的MATLAB语句为:

num=[2 6];

den=[1 2 5 2];

w=logspace(); 即在10-1和101之间,产生100个等距离的点

nyquist(num,den,w)

2)Bode图的绘制与分析

系统的Bode图又称为系统频率特性的对数坐标图。Bode图有两张图,分别绘制开环频率特性的幅值和相位与角频率的关系曲线,称为对数幅频特性曲线和对数相频特性曲线。

MATLAB中绘制系统Bode图的函数调用格式为:

bode(num,den)频率响应w的范围由软件自动设定

bode(num,den,w)频率响应w的范围由人工设定

[mag,phase,w]=bode(num,den,w) 指定幅值范围和相角范围的伯德图例4-2:已知开环传递函数为,试绘制系统的伯德图。

num=[0 0 15 30];

den=[1 16 100 0];

w=logspace();

bode(num,den,w)

grid

绘制的Bode图如图4-2(a)所示,其频率范围由人工选定,而伯德图的幅值范围和相角范围是自动确定的。当需要指定幅值范围和相角范围时,则需用下面的功能指令:

[mag,phase,w]=bode(num,den,w)

mag,phase是指系统频率响应的幅值和相角,由所选频率点的w值计算得出。其中,幅值的单位为dB,它的算式为magdB=20lg10(mag)。

指定幅值范围和相角范围的MATLAB调用语句如下,图形如图4-2(b)所示。

num=[0 0 15 30];

den=[1 16 100 0];

w=logspace();

[mag,phase,w]=bode(num,den,w); %指定Bode图的幅值范围和相角范围

subplot(2,1,1); %将图形窗口分为2*1个子图,在第1个子图处绘制图形semilogx(w,20*log10(mag)); %使用半对数刻度绘图,X轴为log10刻度,Y轴为线性刻度

grid on

xlabel(‘w/s^-1’); ylabel(‘L(w)/dB’);

title(‘Bode Diagram of G(s)=30(1+0.2s)/[s(s^2+16s+100)]’);

subplot(2,1,2);%将图形窗口分为2*1个子图,在第2个子图处绘制图形

semilogx(w,phase);

grid on

xlabel(‘w/s^-1’); ylabel(‘ (0)’);

注意:半Bode图的绘制可用semilgx函数实现,其调用格式为semilogx(w,L),其中L=20*log10(abs(mag))。

3)Nichols图的绘制

在MATLAB中绘制Nichols图的函数调用格式为:

[mag,phase,w]=nichols(num,den,w)

Plot(phase,20*log10(mag))

例4-3:单位负反馈的开环传递函数为,绘制Nichols图。

对应的MATLAB语句如下,所得图形如图4-3所示:

num=10; den=[1 3 9 0];

w=logspace();

[mag,phase]=nichols(num,den,w);

plot(phase,20*log10(mag))

ngrid %绘制nichols图线上的网格2.幅值裕量和相位裕量

幅值裕量和相位裕量是衡量控制系统相对稳定性的重要指标,需要经过复杂的运算求取。应用MATLAB功能指令可以方便地求解幅值裕量和相位裕量。

其MATLAB调用格式为:

[Gm,Pm,Wcg,Wcp]=margin(num,den)

其中,Gm,Pm分别为系统的幅值裕量和相位裕量,而Wcg,Wcp分别为幅值裕量和相位裕量处相应的频率值。

另外,还可以先作bode图,再在图上标注幅值裕量Gm和对应的频率Wcg,相位裕量Pm和对应的频率Wcp。其函数调用格式为:

margin(num,den)

例4-4:对于例4-3中的系统,求其稳定裕度,对应的MATLAB语句如下:

num=10; den=[1 3 9 0];

[gm,pm,wcg,wcp]=margin(num,den);

gm,pm,wcg,wcp

gm = 2.7000

pm = 64.6998

wcg = 3.0000

wcp = 1.1936

如果已知系统的频域响应数据,还可以由下面的格式调用函数:

[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w)

其中(mag,phase,w)分别为频域响应的幅值、相位与频率向量。

三、实验内容

1.典型二阶系统

绘制出,,0.3,0.5,0.8,2的bode 图,记录并分析对系统bode 图的影响。

2.系统的开环传递函数为

)

106)(15()1(8)(22++++=s s s s s s G )

11.0)(105.0)(102.0()13/(4)(++++=s s s s s s G 绘制系统的Nyquist 曲线、Bode 图和Nichols 图,说明系统的稳定性,并通过绘制阶跃响应曲线验证。

3.已知系统的开环传递函数为。求系统的开环截止频率、穿越频率、幅值裕度和相位裕度。应用频率稳定判据判定系统的稳定性。

四、实验报告

1.根据内容要求,写出调试好的MATLAB 语言程序,及对应的结果。

2. 记录显示的图形,根据实验结果与各典型环节的频率曲线对比分析。

3. 记录并分析对二阶系统bode 图的影响。

4.根据频域分析方法分析系统,说明频域法分析系统的优点。

5.写出实验的心得与体会。

五、预习要求

1. 预习实验中的基础知识,运行编制好的MATLAB 语句,熟悉绘制频率曲线的三种图形函数nyquist ()、bode ()和nichols ()。

2. 掌握控制系统的频域分析方法,理解系统绝对稳定性和相对稳定性的判断方法。

实验五 线性系统串联校正

一、实验目的

1.熟练掌握用MATLAB 语句绘制频域曲线。

2.掌握控制系统频域范围内的分析校正方法。

3.掌握用频率特性法进行串联校正设计的思路和步骤。

二、基础知识

控制系统设计的思路之一就是在原系统特性的基础上,对原特性加以校正,使之达到要求的性能指标。最常用的经典校正方法有根轨迹法和频域法。而常用的串联校正装置有超前校正、滞后校正和超前滞后校正装置。本实验主要讨论在MATLAB 环境下进行串联校正设计。

1.基于频率法的串联超前校正

超前校正装置的主要作用是通过其相位超前效应来改变频率响应曲线的形状,产生足够大的相位超前角,以补偿原来系统中元件造成的过大的相位滞后。因此校正时应使校正装置的最大超前相位角出现在校正后系统的开环截止频率处。

例5-1:单位反馈系统的开环传递函数为,试确定串联校正装置的特性,使系统满足在斜坡函数作用下系统的稳态误差小于0.1,相角裕度。

解:根据系统静态精度的要求,选择开环增益

101.0)1(11

)(2

00>?<++?==→→K s s k s s Lim s sE Lim e s s ss

取,求原系统的相角裕度。

>>num0=12; den0=[2,1,0]; w=0.1:1000;

[gm1,pm1,wcg1,wcp1]=margin(num0,den0);

[mag1,phase1]=bode(num0,den0,w);

[gm1,pm1,wcg1,wcp1]

margin(num0,den0) %计算系统的相角裕度和幅值裕度,并绘制出Bode 图 grid;

ans =

Inf 11.6548 Inf 2.4240

由结果可知,原系统相角裕度,,不满足指标要求,系统的Bode 图如图5-1所示。考虑采用串联超前校正装置,以增加系统的相角裕度。

确定串联装置所需要增加的超前相位角及求得的校正装置参数。

),5,,45(0000c m c Φ=Φ=+-=Φ令取为原系统的相角裕度εγγεγγ

e=5; r=45; r0=pm1;

phic=(r-r0+e)*pi/180;

alpha=(1+sin(phic))/(1-sin(phic));

将校正装置的最大超前角处的频率作为校正后系统的剪切频率。则有:

αωωω1

)(0)()(lg 2000=?=c c c c j G j G j G

即原系统幅频特性幅值等于时的频率,选为。

根据=,求出校正装置的参数。即。

[il,ii]=min(abs(mag1-1/sqrt(alpha)));

wc=w( ii); T=1/(wc*sqrt(alpha));

numc=[alpha*T,1]; denc=[T,1];

[num,den]=series(num0,den0,numc,denc); %原系统与校正装置串联

[gm,pm,wcg,wcp]=margin(num,den); %返回系统新的相角裕度和幅值裕度 printsys(numc,denc) %显示校正装置的传递函数 disp(’校正之后的系统开环传递函数为:’);

printsys(num,den) %显示系统新的传递函数

[mag2,phase2]=bode(numc,denc,w); %计算指定频率内校正装置的相角范围和幅值范围

[mag,phase]=bode(num,den,w); %计算指定频率内系统新的相角范围和幅值范围

subplot(2,1,1);semilogx(w,20*log10(mag),w,20*log10(mag1),’--’,w,20*log10(mag2),’-.’);

grid; ylabel(’幅值(db)’); title(’--Go,-Gc,GoGc ’);

subplot(2,1,2); semilogx(w,phase,w,phase1,’--’,w,phase2,’-’,w,(w-180-w),’:’);

grid; ylabel(’相位(0)’); xlabel(’频率(rad/sec)’);

title([‘校正前:幅值裕量=’,num2str(20*log10(gm1)),’db ’,’相位裕量=’,num2str(pm1),’0’;

’校正后:幅值裕量=’,num2str(20*log10(gm)),’db ’,’相位裕量=’,num2str(pm),’0’]);

2.基于频率法的串联滞后校正

滞后校正装置将给系统带来滞后相角。引入滞后装置的真正目的不是为了提供一个滞后相角,而是要使系统增益适当衰减,以便提高系统的稳态精度。

滞后校正的设计主要是利用它的高频衰减作用,降低系统的截止频率,以便能使得系统获得充分的相位裕量。

例5-2:单位反馈系统的开环传递函数为,试确定串联校正装置的特性,使校正后系统的静态速度误差系数等于30/s ,相角裕度,幅值裕量不小于10dB ,截止频率不小

《MATLAB与数值分析》第一次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名:李培睿 学号:2013020904026 指导教师:程建

一、实验名称 《MATLAB与数值分析》第一次上机实验 二、实验目的 1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算 操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序) 2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号 转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m文件编写进行符号因式分解和函数求反的程序) 3. 掌握Matlab函数的编写规范。 4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、 三维曲线和面的填充、三维等高线等。(用.m文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释) 5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。 三、实验内容 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x, y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 2. 编程实现奥运5环图,允许用户输入环的直径。 3. 实现对输入任意长度向量元素的冒泡排序的升序排列。不允许使用sort 函数。 四、实验数据及结果分析 题目一: ①在Editor窗口编写函数代码如下:

matlab实验报告

数学实验报告 班级: 学号: 姓名: 实验序号:1 日期:年 月 日 实验名称:特殊函数与图形 ◆ 问题背景描述:绘图是数学中的一种重要手段,借助图形,可以使抽象的对象得到 明白直观的体现,如函数的性质等。同时,借助直观的图形,使初学者更容易接受新知识,激发学习兴趣。 ◆ 实验目的:本实验通过绘制一些特殊函数的图形,一方面展示这些函数的特点属性, 另一方面,就 Matlab 强大的作图功能作一个简单介绍。 实验原理与数学模型: 1、 球2222x y z R ++= ,x=Rsin φcos θ, y= Rsin φsin θ, z= cos φ, 0≤θ≤2π , 0≤φ≤π 环面 222222222()4(),(cos )cos ,x y z a r a x y x a r φθ+++-=+=- (cos )sin ,sin ,02,02y a r z r φθφφπθπ=-=≤≤≤≤ 2、 平面摆线:2 22 31150,(sin ),(1cos ),0233 x y x a t t y a t t π+-==-=-≤≤ 3、 空间螺线:(圆柱螺线)x=acost , y=asint , z=bt ;(圆锥螺线)22 cos ,sin ,x t t y t t z t === 4、 椭球面sin cos ,sin sin ,cos ,02,0x a y b z c φθφθφθπφπ===≤<≤≤ 双叶双曲面3 tan cos ,tan sin ,sec ,02,22 x a y b z c π φθφθφθπφπ===≤<- << 双曲抛物面2 sec ,tan 2 u x au y bu z θθ=== 实验所用软件及版本:mathematica(3.0) 主要内容(要点): 1、 作出下列三维图形(球、环面) 2、 作出下列的墨西哥帽子 3、 作出球面、椭球面、双叶双曲面,单叶双曲面的图形 4、 试画出田螺上的一根螺线 5、 作出如图的马鞍面

MATLAB实验报告50059

实验一MATLAB操作基础 实验目的和要求: 1、熟悉MATLAB的操作环境及基本操作方法。 2、掌握MATLAB的搜索路径及设置方法。 3、熟悉MATLAB帮助信息的查阅方法 实验内容: 1、建立自己的工作目录,再设置自己的工作目录设置到MA TLAB搜索路径下,再试 验用help命令能否查询到自己的工作目录。 2、在MA TLAB的操作环境下验证课本;例1-1至例1-4,总结MATLAB的特点。 例1-1

例1-2 例1-3 例1-4

3、利用帮助功能查询inv、plot、max、round等函数的功能。 4、完成下列操作: (1)在matlab命令窗口输入以下命令: x=0:pi/10:2*pi; y=sin(x); (2)在工作空间窗口选择变量y,再在工作空间窗口选择回绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量y的图形,并分析图形的含义。

5、访问mathworks公司的主页,查询有关MATLAB的产品信息。 主要教学环节的组织: 教师讲授实验目的、开发环境界面、演示实验过程,然后同学上机练习。 思考题: 1、如何启动与退出MA TLAB集成环境? 启动: (1)在windows桌面,单击任务栏上的开始按钮,选择‘所有程序’菜单项,然后选择MA TLAB程序组中的MA TLABR2008b程序选项,即可启动 MATLAB系统。 (2)在MA TLAB的安装路径中找到MA TLAB系统启动程序matlab.exe,然后运行它。 (3)在桌面上建立快捷方式后。双击快捷方式图标,启动MA TLAB。 退出: (1)在MA TLAB主窗口file菜单中选择exitMATLAB命令。 (2)在MA TLAB命令窗口中输入exit或quit命令。 (3)单击MATLAB主窗口的关闭按钮。 2、简述MATLAB的主要功能。 MATLAB是一种应用于科学计算领域的数学软件,它主要包括数值计算和符 号计算功能、绘图功能、编程语言功能以及应用工具箱的扩展功能。 3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?

matlab第一次实验报告

Matlab第一次实验报告 2012029010010 尹康 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x,y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 程序代码: n=input('input the number of pionts:'); a=input('input a:'); b=input('input b:'); x=[]; y=[]; x(1)=input('input x1:'); y(1)=input('input y1:'); %输入点数、初始值以及系数for i=2:n x(i)=a*x(i-1)-b*(y(i-1)-x(i-1)^2); y(i)=a*x(i-1)+b*(y(i-1)-x(i-1)^2); %根据已输入的数据进行迭代end figure;plot(x,y,'linewidth',2) axis equal %横纵坐标等比例 text(x(1),y(1),'1st point') %标记初始点 运行结果:

心得体会及改进:在输入某些数据时,所绘曲线可能是一条折线(如:n=5,a=b=x1=1,y1=2)甚至只有一个点(如:n=5,a=b=x1=y1=1),此时可能出现曲线与坐标轴重合或无法看到点的情况,为了更清晰地展现曲线,可以使线宽适当加宽并标记初始点。 2.编程实现奥运5环图,允许用户输入环的直径。 程序代码: 函数circle: %在指定的圆心坐标处,用指定颜色、宽度的线条绘出指定半径、圆心角的弧 function f=circle(r,x,y,color,linw,alp1,alp2) alp=linspace(alp1,alp2); X=r*cos(alp)+x; Y=r*sin(alp)+y; plot(X,Y,color,'linewidth',linw) end 主程序代码: r=input('input r:');

matlab实验报告

实验一小球做自由落体运动内容:一小球竖直方向做自由落体,并无损做往返运动。程序: theta=0:0.01:2*pi x=cos(theta) y=sin(theta) l=1 v=1 while l<10 for t=1:10 y=y+(-1)^l*v*t plot(x,y,[-1,1],[-56,2],'.') axis equal pause(0.1) end l=l+1 end 结果:

-50 -40 -30 -20 -10 收获:通过运用小球自由落体规律,及(-1)^n 来实现无损往 返运动! 实验二 旋转五角星 内容:一个五角星在圆内匀速旋转 程序:x=[2 2 2 2 2 2] y=[0 4/5*pi 8/5*pi 2/5*pi 6/5*pi 0] y1=2*sin(y) x1=2*cos(y) theta=0:4/5*pi:4*pi

x2=2*cos(theta) y2=2*sin(theta) plot(x,y,x1,y1,x2,y2) axis equal theta1=theta+pi/10 x2=2*cos(theta1) y2=2*sin(theta1) plot(x2,y2) axis equal theta=0:4/5*pi:4*pi for rot=pi/10:pi/10:2*pi x=2*cos(theta+rot) y=2*sin(theta+rot) plot(x,y) pause(0.1) end 结果:

-2 -1.5-1-0.500.51 1.52 -2-1.5-1-0.500.511.5 2 收获:通过theta1=theta+pi/10,我们可以实现五角星在圆内匀速 旋转! 实验三 转动的自行车 内容:一辆自行车在圆内匀速转动 程序:x=-4:0.08:4; y=sqrt(16-x.^2); theta1=-pi/2:0.01*pi:3*pi/2; x3=0.5*cos(theta1); y3=0.5*sin(theta1); theta=-pi/2+0.02*pi for k=1:100

MATLAB实验报告(1-4)

信号与系统MATLAB第一次实验报告 一、实验目的 1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。 2.学会运用MATLAB表示常用连续时间信号的方法 3.观察并熟悉一些信号的波形和特性。 4.学会运用MATLAB进行连续信号时移、反折和尺度变换。 5.学会运用MATLAB进行连续时间微分、积分运算。 6.学会运用MATLAB进行连续信号相加、相乘运算。 7.学会运用MATLAB进行连续信号的奇偶分解。 二、实验任务 将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。 三、实验内容 1.MATLAB软件基本运算入门。 1). MATLAB软件的数值计算: 算数运算 向量运算:1.向量元素要用”[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn为结束值。 矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开; 矩阵的不同行之间必须用分号”;”或者ENTER分开。2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。

举例:计算一个函数并绘制出在对应区间上对应的值。 2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名” 2.MATLAB软件简单二维图形绘制 1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y) 2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p 表示第p个区域,表达为subplot(mnp)或者subplot(m,n,p) 3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin]) 4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’) 5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’) 6).输出:grid on 举例1:

参考答案Matlab实验报告

实验一 Matlab基础知识 一、实验目的: 1.熟悉启动和退出Matlab的方法。 2.熟悉Matlab命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握Matlab各种表达式的书写规则以及常用函数的使 用。 二、实验内容: 1.求[100,999]之间能被21整除的数的个数。(rem) 2.建立一个字符串向量,删除其中的大写字母。(find) 3.输入矩阵,并找出其中大于或等于5的元素。(find) 4.不采用循环的形式求出和式 63 1 2i i= ∑ 的数值解。(sum) 三、实验步骤: ●求[100,199]之间能被21整除的数的个数。(rem) 1.开始→程序→Matlab 2.输入命令: ?m=100:999; ?p=rem(m,21); ?q=sum(p==0) ans=43 ●建立一个字符串向量,删除其中的大写字母。(find) 1.输入命令:

?k=input('’,’s’); Eie48458DHUEI4778 ?f=find(k>=’A’&k<=’Z’); f=9 10 11 12 13 ?k(f)=[ ] K=eie484584778 ●输入矩阵,并找出其中大于或等于5的元素。(find) 1.输入命令: ?h=[4 8 10;3 6 9; 5 7 3]; ?[i,j]=find(h>=5) i=3 j=1 1 2 2 2 3 2 1 3 2 3 ●不采用循环的形式求出和式的数值解。(sum) 1.输入命令: ?w=1:63; ?q=sum(2.^w) q=1.8447e+019

实验二 Matlab 基本程序 一、 实验目的: 1. 熟悉Matlab 的环境与工作空间。 2. 熟悉M 文件与M 函数的编写与应用。 3. 熟悉Matlab 的控制语句。 4. 掌握if,switch,for 等语句的使用。 二、 实验内容: 1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 2. 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。 3. 编写M 函数文件表示函数 ,并分别求x=12和56时的函数值。 4. 编程求分段函数 2226;03 56;0532 1;x x x x y x x x x x x x +-<≠=-+≤<≠≠-+且且及其它,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y 。 三、 实验步骤: 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 1. 打开Matlab ,新建M 文件 2. 输入命令: 51022-+x

MATLAB实验报告

MATLAB程序设计语言 实 验 报 告 专业及班级:电子信息工程 姓名:王伟 学号:1107050322 日期 2013年6月20日

实验一 MATLAB 的基本使用 【一】 实验目的 1.了解MATALB 程序设计语言的基本特点,熟悉MATLAB 软件的运行环境; 2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力; 3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。 【二】 MATLAB 的基础知识 通过本课程的学习,应基本掌握以下的基础知识: 一. MATLAB 简介 二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取 五. MATLAB 的数值计算功能 六. 程序流程控制 七. M 文件 八. 函数文件 九. MATLAB 的可视化 【三】上机练习 1. 仔细预习第二部分内容,关于MATLAB 的基础知识。 2. 熟悉MATLAB 环境,将第二部分所有的例子在计算机上练习一遍 3. 已知矩阵???? ??????=??????????=123456789,987654321B A 。求A*B ,A .* B ,比较二者结果是否相同。并利用MATLAB 的内部函数求矩阵A 的大小、元素和、长度以 及最大值。 程序代码: >> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1]; >> A*B ans =

30 24 18 84 69 54 138 114 90 >> A.*B ans = 9 16 21 24 25 24 21 16 9 两者结果不同 >> [m,n]=size(A) m = 3 n = 3 >> b=sum(A) b = 12 15 18 >> a=length(A) a = 3 >>max(A) ans =

matlab实验报告

Matlab实验报告 实验二图像处理 一、实验目的 (1)通过应用MA TLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件的编程及应用; (2)通过实验进一步掌握图像处理的基本技术和方法。 二、实验内容及代码 ㈠.应用MA TLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换 首先,在matlab页面中的current directory下打开存放图像的文件夹。 1.显示各种图像 ⑴显示彩色图像: ①代码:>> mousetif=imread('tif.TIF'); >> image(mousetif) 显示截图: ②代码:>> mousetif=imread('tif.TIF'); >> imshow(mousetif) 显示截图:

③代码:mousetif=imread('tif.TIF'); subimage(mousetif) 显示截图: 显示截图:

⑵显示二值图像 ①代码:>> I=imread('单色bmp.bmp'); >> imagesc(I,[0 2]) 显示截图: ②代码:>> I=imread('单色bmp.bmp');

>> imshow(I,2) 显示截图: ③代码:>> I=imread('单色bmp.bmp'); >> subimage(I) 显示截图:

⑶显示灰度图像 ①代码:>> I1=imread('256bmp.bmp'); >> imagesc(I1,[0,256]) 显示截图: 代码:>> I1=imread('256bmp.bmp'); >> colormap(gray); >> subplot(1,2,1); >> imagesc(I1,[0,256]); >> title('灰度级为[0 256]的mouse.bmp图'); >> subplot(1,2,2); >> imagesc(I1,[0,64]); >> colormap(gray); >> title('灰度级为[0 64]的mouse.bmp图'); 显示截图:

MATLAB全实验报告

《数学实验》报告 实验名称 Matlab 基础知识 学院 专业班级 姓名 学号 2014年 6月

一、【实验目的】 1.认识熟悉Matlab这一软件,并在此基础上学会基本操作。 2.掌握Matlab基本操作和常用命令。 3.了解Matlab常用函数,运算符和表达式。 4.掌握Matlab工作方式和M文件的相关知识。 5.学会Matlab中矩阵和数组的运算。 二、【实验任务】 P16 第4题 编写函数文件,计算 1! n k k = ∑,并求出当k=20时表达式的值。P27第2题 矩阵A= 123 456 789 ?? ?? ?? ?? ?? ,B= 468 556 322 ?? ?? ?? ?? ?? ,计算A*B,A.*B,并比较两者的区别。 P27第3题 已知矩阵A= 52 91 ?? ?? ?? ,B= 12 92 ?? ?? ?? ,做简单的关系运算A>B,A==B,AB)。 P34 第1题 用 111 1 4357 π =-+-+……公式求π的近似值,直到某一项的绝对值小于-6 10为止。 三、【实验程序】 P16 第4题 function sum=jiecheng(n) sum=0; y=1; for k=1:n for i=1:k y=y*i; end sum=sum+y; end sum P27第2题 >>A=[1 2 3;4 5 6;7 8 9] >>B=[4 6 8;5 5 6;3 2 2] >>A*B

P27第3题 >> A=[5 2;9 1];B=[1 2;9 2]; >>A>B >>A==B >>A> (A==B)&(A> (A==B)&(A>B) P34 第1题 t=1; pi=0; n=1; s=1; while abs(t)>=1e-6 pi=pi+t; n=n+2; s=-s; t=s/n; end pi=4*pi; 四、【实验结果】 P16 第4题 P27第2题

matlab实验报告

实验报告 2. The Branching statements 一、实验目的: 1.To grasp the use of the branching statements; 2.To grasp the top-down program design technique. 二、实验内容及要求: 1.实验内容: 1).编写 MATLAB 语句计算 y(t)的值 (Write the MATLAB program required to calculate y(t) from the equation) ???<+≥+-=0 530 53)(2 2t t t t t y 已知 t 从-5到 5 每隔0.5取一次值。运用循环和选择语句进行计算。 (for values of t between -5 and 5 in steps of 0.5. Use loops and branches to perform this calculation.) 2).用向量算法解决练习 1, 比较这两个方案的耗时。 (tic ,toc 的命令可以帮助你完成的时间计算,请使用'help'函数)。 Rewrite the program 1 using vectorization and compare the consuming time of these two programs. (tic, toc commands can help you to finish the time calculation, please use the …help ? function). 2.实验要求: 在报告中要体现top-down design technique, 对于 3 要写出完整的设计过程。 三、设计思路: 1.用循环和选择语句进行计算: 1).定义自变量t :t=-5:0.5:5; 2).用循环语句实现对自变量的遍历。 3).用选择语句实现对自变量的判断,选择。 4).将选择语句置入循环语句中,则实现在遍历中对数据的选择,从而实现程序的功能。 2. 用向量法实现: 1).定义自变量t :t=-5:0.5:5; 2).用 b=t>=0 语句,将t>=0得数据选择出,再通过向量运算y(b)=-3*t(b).^2 + 5; 得出结果。 3).用取反运算,选择出剩下的数据,在进行向量运算,得出结果。 四、实验程序和结果 1.实验程序 实验程序:创建m 文件:y_t.m

广州大学学生实验报告1 matlab 程序设计

广州大学学生实验报告 开课学院及实验室:机械与电气工程学院计算机楼 301室2014 年10 月30 日

2、MATLAB指令窗的基本操作 MATLAB指令窗给用户提供了最直接的交互界面,可用于输入和执行指令、显示指令运行结果、调试MATLAB程序等常用的MATLAB仿真计算功能。本实验掌握以下在指令窗执行的基本操作,达到熟悉使用指令窗的目的: (1)最简单的计算器使用方法:在MATLAB指令窗中,可按计算器的方式进行一般的数学计算,MATLAB的运算符的含义大致与常见的运算规则一致; (2)在指令窗中输入和生成矩阵:与一般的计算器不同,在MATLAB中可直接输入和生成矩阵。实际上,矩阵是MATLAB工作的基本元素。 (3)数值表述方法:在MATLAB中的大部分数值的表述方式与平常是相同的,需要注意的是在表示比较大的数时,MATLAB默认采用科学计数法显示; (4)变量命名规则:对于MATLAB变量命名规则,需要注意以下几点: a、变量名、函数名对字母大小写敏感 b、变量名的第一个字母必须是英文字母,后续可以是字母、数字、下划线 c、变量的有效时限:在变量定义赋值之后,会作为内存变量保存并显示在Workspace Browser中。因此,凡是显示在Workspace Browser中的变量 都是“有效”的,其后可以被调用,否则不能被调用。 d、对于像 等常用的数学常量,MATLAB定义了预定义变量与其对应,在使用时需多加留意。 e、复数和复数矩阵的表示方法。 (5)其他操作的操作要旨和操作技巧的运用。 3、计算结果的图形表示 计算结果可视化是MATLAB的主要组成部分,借助图形表现数据是十分常用的“数据表达手段”,尤其当数据量相当庞大时,因为图形可以表现数据内在联系和宏观特征。关于MATLAB绘图的基本方法在后续章节中详细讲述,本实验主要通过示例了解MATLAB绘图的基本功能。 4、Current Directory、路径设置器和文件管理 理解当前目录Current Directory和搜索路径的作用是正确使用MATLAB的关键环节。当前目录指的是当前MA TLAB工作的目录,MATLAB运行指令需要打开或者保存的文件,都首先在目录中查找或保存。搜索路径则是MATLAB工作时,需查找相应的文件、函数或变量所在的相关文件夹所在的路径。 在理解当前目录Current Directory和搜索路径的作用的基础上,也要掌握当前目录Current Directory和搜索路径的设置方法,这是正确使用MA TLAB 的必要步骤。 为了理解MATLAB当前目录Current Directory和搜索路径的作用,可以大致了解一下当用户从指令窗送入一个名为cow的指令后,MATLAB的“运作次序”: (1)MATLAB在内存中检查,看cow是不是变量;如果不是,进行下一步; (2)检查cow是不是内建函数;如果不是进行下一步; (3)在当前目录下,检查是否有名为cow的M文件存在;如果不是,进行下一步; (4)在MA TLAB搜索路径的其他目录下,检查是否有名为cow的M文件存在。

浅析Matlab数学实验报告

数学实验报告 姓名: 班级: 学号: 第一次实验任务 过程: a=1+3i; b=2-i; 结果: a+b =3.0000 + 2.0000i a-b =-1.0000 + 4.0000i a*b = 5.0000 + 5.0000i a/b = -0.2000 + 1.4000i 过程: x=-4.5*pi/180; y=7.6*pi/180; 结果: sin(abs(x)+y)/sqrt(cos(abs(x+y))) =0.2098 心得:对于matlab 中的角度计算应转为弧度。 (1)过程: x=0:0.01:2*pi; y1=sin(x); y2=cos(x); y3=exp(x); y4=log(x); plot(x,y1,x,y2,x,y3,x,y4) plot(x,y1,x,y2,x,y3,x,y4) 结果: (2)过程:>> subplot(2,2,1) >> plot(x,y1) >> subplot(2,2,2) >> plot(x,y2) ./,,,,2,311b a b a b a b a i b i a ?-+-=+=计算、设有两个复数 6,7,5.4)

cos()sin(2=-=++y x y x y x ,其中、计算的图形。 下分别绘制)同一页面四个坐标系)同一坐标系下(、在( x y e y x y x y x ln ,,cos ,sin 213==== >> subplot(2,2,3) >> plot(x,y3) >> subplot(2.2.4) >> subplot(2,2,4) >> plot(x,y4) 结果: 心得:在matlab中,用subplot能够实现在同一页面输出多个坐标系的图像,应注意将它与hold on进行区别,后者为在同一坐标系中划出多条曲线。 5、随机生成一个3x3矩阵A及3x2矩阵B,计算(1)AB,(2)对B中每个元素平方后得到的矩阵C,(3)sinB,(4)A的行列式,(5)判断A是否可逆,若可逆,计算A的逆矩阵,(6)解矩阵方程AX=B,(7)矩阵A中第二行元素加1,其余元素不变,得到矩阵D,计算D。 过程:A=fix(rand(3,3).*10) ; B=fix(rand(3,3).*10);

MATLAB程序设计实验报告

MATLAB实验报告 一、实验名称 实验4图形绘制(1) 二、实验目的: 熟悉和掌握MA TLAB基本的二维图形绘制函数。 三、实验内容: 1.绘制简单的二维图形 2.一个坐标系绘制多幅图形 3.图形标识和坐标控制 4.交互式图形指令 四、回答问题: (本次实验未预留问题) 五、遇到的问题及解决: 遇到了求y=lnx时,输入“y=ln(x)”不被软件识别的问题,查看常用数学函数表后改为y=log(x)成功解决。 在求10x时不知道用什么函数,函数表里也查不到,在老师的点拨下用“y=10.^x”解决。 在绘图时发现默认线型不够明显,查表后使用尖三角、叉号代替默认线型。 六、体会: 本次实验我学会了利用MATLAB绘制图形的基本方法,以及相应的备注方法。 难点是了解各种函数的具体作用并熟练掌握。 体会是:多学多练,孰能生巧,日积月累,必有提高。

思考题: 1.在同一坐标系绘制t3,-t2,t2sint在[0,2π]内的曲线图。 x=0:pi/50:2*pi; y1=t.*t.*t; y2=-t.*t; y3=t.*t.*sin(t); plot(t,y1,'^k',t,y2,'.k',t,y3,'xk'); legend('\ity=t^3','\ity=-t^2','\itt^2*sint'); 2.在一幅图中画出4幅子图,分别绘制sin2x,tanx,lnx,10x的图形,并加上适当的图形注释。注意:把函数变成MATLAB对应的形式。 x=0:pi/50:2*pi; y1=sin(2*t); y2=tan(x); y3=log(x); y4=10.^x; subplot(2,2,1) plot(x,y1); legend('y=sin2x'); subplot(2,2,2) plot(x,y2) legend('y=tanx'); subplot(2,2,3) plot(x,y3)

MATLAB入门实验报告

MATLAB实验报告 题目:第一次实验报告 学生姓名: 学院: 专业班级: 学号: 年月

MATLAB第一次实验报告 ————入门第一次上机实验刘老师就MATLAB软件进行了 大致的讲解,并讲了如何建立M文件,定义函数数 组矩阵,如何绘图。先就老师讲解及自己学习的情 况做汇报。 一、建立M文件 <1>M文件建立方法: 1. 在MATLAB中,点:File→New →M-file 2. 在编辑窗口中输入程序内容 3. 点File →Save,存盘,M文件名必须与函数名 一致 <2>课上实例 例:定义函数f(x1,x2)=100(x2-x12)2+(1-x1)2 答:建立M文件:fun.m function f=fun(x) f=100*(x(2)-x(1)^2)^2+(1-x(1))^2 如此便可以直接使用函数fun.m 例如计算f(1,2), 只需在MATLAB命令窗口键入命

令: x=[1 2] fun(x) 得f = 100. <3>课下作业 题目:有一函数,写一程序,输入自变量的值,输出函数值. 解答:建立M文件:zuoye1.m function f=zuoye1(x,y) f=x^2+sin(x*y)+2*y 命令行输入x=1,y=1 zuoye1(x,y) 得ans = 3.8415 经验算答案正确,所以程序正确。

二、定义数组、矩阵 <1>说明 逗号或空格用于分隔某一行的元素,分号用于区分不同的行. 除了分号,在输入矩阵时,按Enter 键也表示开始新一行. 输入矩阵时,严格要求所有行有相同的列 <2>课后作业 题目:有一个4x5矩阵,编程求出其最大值及其所处的位置. 解答:a=round(10*rand (4,5)) [temp I]=max(a) [am II]=max(temp) p=[I(II) II] 运行得一随机矩阵 a = 7 7 7 3 7 0 8 2 0 3 8 7 7 1 10 9 4 0 8 0 temp =

Matlab实验指导书(含答案)汇总

实验一:Matlab操作环境熟悉 一、实验目的 1.初步了解Matlab操作环境。 2.学习使用图形函数计算器命令funtool及其环境。 二、实验内容 熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算: 1.单函数运算操作。 求下列函数的符号导数 (1) y=sin(x); (2) y=(1+x)^3*(2-x); 求下列函数的符号积分 (1) y=cos(x); (2) y=1/(1+x^2); (3) y=1/sqrt(1-x^2); (4) y=(x-1)/(x+1)/(x+2); 求反函数 (1) y=(x-1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2)); 代数式的化简 (1) (x+1)*(x-1)*(x-2)/(x-3)/(x-4); (2) sin(x)^2+cos(x)^2; (3) x+sin(x)+2*x-3*cos(x)+4*x*sin(x); 2.函数与参数的运算操作。 从y=x^2通过参数的选择去观察下列函数的图形变化 (1) y1=(x+1)^2 (2) y2=(x+2)^2 (3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作 求和 (1) sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5 乘积 (1) exp(-x)*sin(x)

matlab实验报告

Matlab实验报告 ——定积分的近似计算 学生姓名: 学号: 专业:数学与应用数学专业

数学实验报告 实验序号:1001114030 日期:2012年10月20日 班级应一姓名陈璐学号1001114030 实验名称:定积分的近似运算 问题背景描述: 利用牛顿—莱布尼茨公式虽然可以精确地计算定积分的值,但它仅适合于被积分函数的原函数能用初等函数表达出来的情形。如果这点办不到或不容易办到, 这就有必要考虑近似计算的方法。在定积分的很多应用问题中,被积函数甚至没 有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只 能应用近似方法去计算相应的定积分。 实验目的: 本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线发。对于定积分的近似数值计算,Matlab有专门函数可用。 实验原理与数学模型: 1.sum(a):求数组a的和。 2.format long:长格式,即屏幕显示15位有效数字。 3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数之则转化为 相应的实型数值。 4.quad():抛物线法求数值积分。格式:quad(fun,a,b)。此处的fun是函数,并且

为数值形式,所以使用*、/、^等运算时要在其前加上小数点。 5.trapz():梯形法求数值积分。格式:trapz(x,y)。其中x为带有步长的积分区间;y为数 值形式的运算。 6.fprintf(文件地址,格式,写入的变量):把数据写入指定文件。 7.syms 变量1变量2……:定义变量为符号。 8.sym('表达式'):将表达式定义为符号。 9.int(f,v,a,b):求f关于v积分,积分区间由a到b。 10.subs(f,'x',a):将a的值赋给符号表达式f中的x,并计算出值。若简单地使用subs (f),则将f的所有符号变量用可能的数值代入,并计算出值。 实验所用软件及版本:Matlab 7.0.1

MATLAB实验报告

中南民族大学 计算机科学学院 MATLAB实验报告 题目MATLAB实验 年级 2010 专业计算机科学与技术 指导教师李波 小组成员(姓名学号) 实验类型综合型 2014年4月22 日

一、实验安排 1.实验目的 1.掌握字符串的生成和操作,掌握单元数组的生成和操作,掌握结构体的生成和操作。 2.掌握MATLAB 的脚本文件及其编辑和调试方法,掌握MATLAB 程序设计和开发流程,掌握MATLAB 的关系运算,逻辑运算及函数操作,掌握MATLAB 流程控制语句。 3.掌握基本符号运算,掌握符号函数的绘制,掌握符号函数微积分的运算,掌握符号方程的求解方法,掌握符号积分变换,了解MAPLE 函数的调用方法,了解符号计算器的使用。 4.了解MATLAB 的图形窗口,掌握MATLAB 基本二维图形,三维图形的绘制,以及图形的绘制,如柱形图,饼状图,掌握图形注释的添加和管理,了解三维图形的视点控制及颜色,光照控制 5.了解Matlab 的图形对象及其属性,掌握MATLAB 图形对象属性的设置及其查询,掌握MATLAB 的图形对象句柄的访问及其操作。 2.实验内容 (1) 编写一个脚本,查找给定字符串中指定字符出现的次数和位 (2) 创建2x2单元数组,创建 2×2 单元数组,第 1、2 个元素为字符串,第 三个元素为整型变量,第四个元素为双精(double )类型,并将其用图形表示。 (3) 创建一个结构体,用于统计学生的情况,包括学生的姓名、学号、各科成 绩等。然后使用该结构体对一个班级的学生成绩进行管理,如计算总分、平均分、排列名次等。 (4) 在MATLAB 中使用一个循环确定:如果用户最初在一个银行帐户中存储 $10000,并且在每年的年终再存储$10000(银行每年支付6%的利息),那么账户上要积累$1000000要需要多长时间。 (5)设x 为符号变量,()421f x x x =++,()32458g x x x x =+++,试进行如下运算: (1)()()f x g x + (2)()()f x g x ? (3)求()g x 的反函数 (4)求g 以()f x 为自变量的复合函数

matlab7.0x课后习题答案

1、利用基本矩阵产生3*3和15*8的单位矩阵、全1矩阵、全0矩阵、均匀分布随机阵([-1,1]之间)、正态分布随机阵(均值为1,方差为4)。 解: A1=eye(3); A2=ones(3); A3=zeros(3); A4=2*rand(3)-1; A5=2*randn(3)+1; B1=eye(15,8); B2=ones(15,8); B3=zeros(15,8); B4=2*rand(15,8)-1; B5=2*randn(15,8)+1; 结果:由于数据是随机产生的,所以在没有给出运行结果。 2、利用diag等函数产生下列矩阵: a=[0 0 8;0 -7 5;2 3 0] b=[2 0 4;0 5 0;7 0 8] 然后利用reshape函数将它们变换成行向量。 解: 产生a的程序: b=diag([8 -7 2]); c=b+diag([5 3],-1); a=fliplr(c) 产生b的程序: s=[2 2 8]; t=[4 3 7]; v=diag(s); p=diag(t)+fliplr(v); b=fliplr(p) 运行结果: a = 0 0 8 0 -7 5 2 3 0 b = 2 0 4 0 5 0 7 0 8 利用reshape函数将它们变换成行向量:reshape(a,1,9) ans = 0 0 2 0 -7 3 8 5 0 3、产生一均匀分布在(-5,5)之间的随机阵(50*2),要求精确到小数点后一位。 解: A=5-round(100*rand(50,2))/10 部分数据结果: A = 2.4000 4.2000 -0.1000 2.7000 -4.6000 -3.3000

MATLAB实验报告(8个实验)

四川师范大学MATLAB语言实验报告1 系级班年月日 实验名称:Intro, Expressions, Commands 姓名学号指导教师成绩1Objective The objective of this lab is to familiarize you with the MATLAB program development environment and to develop your first programs in this environment. 2Using MATLAB 2.1Starting MATLAB Logon to your computer and start MATLAB by double-clicking on the icon on the desktop or by using the Start Programs menu. MATLAB Desktop window will appear on the screen. The desktop consists of several sub-windows. The most important ones are: ●Command Window (on the right side of the Desktop) is used to do calculations, enter variables and run built-in and your own functions. ●Workspace (on the upper left side) consists of the set of variables (arrays) created during the current MATLAB session and stored in memory. ●Command History (on the lower left side) logs commands entered in the Command Window. You can use this window to view previously run statements, and copy and execute selected statements. You can switch between the Launch Pad window and the Workspace window using the menu tabs under the sub-window on the upper left side. Similarly, you can switch between the Command History and Current Directory windows using the menu tabs under the sub-window on the lower left side. 2.2Executing Commands You can type MATLAB commands at the command prompt “>>” on the Command Window. For example, you can type the formula cos(π/6)2sin(3π/8) as >>(cos(pi/6) ^ 2) * (sin(3 * pi/8)) Try this command. After you finish typing, press enter. The command will be interpreted and the result will be displayed on the Command Window. Try the following by observing how the Workspace window changes: >> a = 2; (M ake note of the usage of “;”) >> b = 3;

相关文档