当前位置:文档之家› 自控MATLAB实验4

自控MATLAB实验4

自控MATLAB实验4
自控MATLAB实验4

《自动控制原理》课程实验报告

实验名称频域稳定分析

专业班级11过程自动化3班

学号2011500169

姓名鲁雅洁

指导教师李离

学院名称电气信息学院

2013 年3 月4 日

实验四频域稳定性分析

一、实验目的

(1)巩固系统频域稳定性的概念;

(2)利用MATLAB 绘制Nyquist 图、Bode 图和Nichols 图进行频域分析;(3)学习利用MATLAB 进行系统参数设计的方法。

二、实验设备

(1)硬件:个人计算机;

(2)软件:MATLAB 仿真软件(版本6.5 或以上)。

三、实验内容和步骤

1.熟悉本实验涉及的部分MATLAB 函数

本实验涉及的MATLAB 函数包括nyquist、nichols、margin、pade 等。

调用函数nyquist 可以绘制出系统的Nyquist 图,调用方法见图 4.1。如果只输入等式的右边,会直接生成Nyquist 图。

图 4.1 函数nyquist 的调用

例1 函数nyquist 调用示例

某闭环控制系统如图4.2 所示,利用函数nyquist 绘制其Nyquist 图的程序段及运行结果如图4.3所示。

图4.2 某闭环控制系统

图4.3 例1 系统的Nyquist 图及相关程序

系统的增益裕量和相位裕量既可借助Nyquist 图也可通过Bode 图来确定。图4.4说明了利用函数margin由Bode图确定例1系统相对稳定性的方法。如果只

输入等式的右边,会自动生成Bode图并标注增益与相位裕量,如图4.5所示。

图4.4 函数margin 的调用方法一

图4.5 函数margin 的调用方法二

图4.6 函数nichols 的调用

函数pade 可以用来近似表示延迟环节e?sT ,如图4.7 所示。

图 4.7 函数pade 的调用

2.利用函数nyquist 和margin 分析系统的相对稳定性

修改本实验所附程序lab4_1.m 并运行之,分析K = 0.5、2、3.013、4 和10 时,开环传递函数为

某单位负反馈闭环系统(如图4.8 所示)的相对稳定性。

图 4.8 某闭环系统二

Lab4_1_1.m

K=0.5

1.利用函数nyquist分析如下:

程序:

num=[0.5];den=[1 2 1 0.5];

sys=tf(num,den);

nyquist(sys)

仿真结果:

可将传递函数写成零极点形式)

5217.02174.0)(5217.02174.0)(5625(5.0)(i s i s s s G -++++=

,

开环传递函数在右半S 平面无极点即P=0,从图可以看到nyquist 图包围(-1,j0)

点0次,即N=0,由乃奎斯特稳定性判据可知闭环系统在右半S 平面的极点数Z=N+P=0 故系统稳定。

2.利用margin 函数分析如下: 程序:

num=[0.5];den=[1 2 1 0.5]; sys=tf(num,den); margin(sys) 仿真结果:

可得系统的相位裕量为Pm=-131°+180°=49°,幅值裕量Gm=9.55dB 对于最小相位系统幅值裕度与相角裕度大于零则系统稳定。也可在伯德图上判断系统稳定性,对数幅频特性大于零所对应的想频特性穿越-180°线的情况为0==-+N N ,则N=0=

2

P

=0。根据乃奎斯特判据知闭环系统稳定。

Lab4_1_2.m K=2

1.利用函数nyquist 分析如下: 程序:

num=[2];den=[1 2 1 0.5]; sys=tf(num,den); nyquist(sys) 仿真结果:

如上分析,开环传递函数在右半S 平面无极点即P=0,从图可得nyquist 曲线

顺时针包围(-1,j0)点2次,即N=2,由乃奎斯特稳定性判据可知闭环系统在右半S 平面的极点数Z=N+P=2 系统不稳定。

2.利用margin 函数分析如下: 程序:

num=[2];den=[1 2 1 0.5]; sys=tf(num,den); margin(sys)

仿真结果:

由margin 函数可得系统相位裕量为Pm=-7.71°,幅值裕量Gm=-2.49dB ,对于最小相位系统Pm <0, Gm <0系统不稳定。也可在伯德图上判断系统稳定性,对数幅频特性大于零所对应的想频特性穿越-180°线的情况为,则

21P

N N N ≠

-=-=-+,闭环系统不稳定。系统在右半

S 平面极点数S=Z-2N=2。

Lab4_1_3.m K=3.013

1.利用函数nyquist 分析如下: 程序:

num=[3.013];den=[1 2 1 0.5]; sys=tf(num,den); nyquist(sys) 仿真结果:

开环传递函数在右半S平面无极点即P=0,从图可得nyquist曲线与实轴交于点(-2,j0),其顺时针包围(-1,j0)点2次,即N=2≠P,由乃奎斯特稳定性判据可知闭环系统不稳定且在右半S平面的极点数Z=N+P=2。

2.利用margin函数分析如下:

程序:

num=[3.013];den=[1 2 1 0.5];

sys=tf(num,den);

margin(sys)

仿真结果:

由图可得系统相位裕量为Pm=-17.3°,幅值裕量Gm=-6.05dB ,对于最小相位

系统Pm <0,Gm <0系统不稳定。也可在伯德图上判断系统稳定性,对数幅频特性大于零所对应的想频特性穿越-180线的情况为0=+N ,1=-N 则

21P

N N N ≠

-=-=-+,闭环系统不稳定。系统在右半S 平面极点数S=Z-2N=2。.

Lab4_1_4.m K=4

1.利用函数nyquist 分析如下: 程序:

num=[4];den=[1 2 1 0.5]; sys=tf(num,den); nyquist(sys) 仿真结果:

开环传递函数在右半S 平面无极点即P=0,从图(8)可得nyquist 曲线与实

轴交于点(-2.63,j0),其顺时针包围(-1,j0)点2次,即N=2≠P ,由乃奎斯特稳定性判据可知闭环系统不稳定且在右半S 平面的极点数Z=N+P=2。 2.利用margin 函数分析如下: 程序:

num=[4];den=[1 2 1 0.5]; sys=tf(num,den); margin(sys)

仿真结果:

由图可得系统相位裕量为Pm=-23.2°,幅值裕量Gm=-8.51dB ,对于最小相位系统Pm <0,Gm <0系统不稳定。也可在伯德图上判断系统稳定性,对数幅频特性大于零所对应的想频特性穿越-180°线的情况为0=+N ,1=-N 则

21P

N N N ≠

-=-=-+,闭环系统不稳定。系统在右半S 平面极点数S=Z-2N=2。

Lab4_1_5.m K=10

1.利用函数nyquist 分析如下: 程序:

num=[10];den=[1 2 1 0.5]; sys=tf(num,den); nyquist(sys) 仿真结果:

开环传递函数在右半S平面无极点即P=0,从图(10)可得nyquist曲线与实轴交于点(-6.6,j0),其顺时针包围(-1,j0)点2次,即N=2≠P,由乃奎斯特稳定性判据可知闭环系统不稳定且在右半S平面的极点数Z=N+P=2。

2.利用margin函数分析如下:

程序:

num=[10];den=[1 2 1 0.5];

sys=tf(num,den);

margin(sys)

仿真结果:

由图可得系统相位裕量为Pm=--39.3°,幅值裕量Gm=-16.5dB ,对于最小相位

系统 Pm <0, Gm <0系统不稳定。

也可在伯德图上判断系统稳定性,对数幅频特性大于零所对应的想频特性穿越-180°线的情况为0=+N ,1=-N 则21P

N N N ≠

-=-=-+,闭环系统不稳定。系统

在右半S 平面极点数S=Z-2N=2。

从以上实验可以清楚的看到随着系统开环增益K 的增大,系统从稳定变为不稳定。稳定性逐渐下降,闭环系统的相位裕量和幅值裕量都随着K 的增大而减小。

3.利用函数 nichols 分析系统的相对稳定性 修改本实验所附程序lab4_2.m 并运行之,分析图4.8 所示系统中开环传递函数分别为

时该系统的稳定性。 Lab4_2_1.m 程序:

num=[1]; den=[0.2 1.2 1 0 ]; sys=tf(num,den);

w=logspace(-1,1,400); nichols(sys,w); Ngrid

仿真结果:

从nichols图可以得到系统的相位裕量Pm=-137°+180°=43°,幅值裕量Gm=0-(-15.6)=15.6dB。Pm>0,Gm>0,系统稳定。

Lab4_2_2.m

程序:

num=[0.64]; den=[1 1 1 0 ];

sys=tf(num,den);

w=logspace(-1,1,400);

nichols(sys,w);

Ngrid

仿真结果:

从nichols图可以得到系统的相位裕量Pm=-148°+180°=32°,幅值裕量Gm=0-(-3.92)=3.92dB。Pm>0,Gm>0,系统稳定。

4.液位控制系统的稳定性分析

修改本实验所附程序lab4_3.m 并运行之,分析图4.9 所示液位控制系统(T = 1 秒)的相对稳定性。如若要求系统具有至少30°的相位裕量,试借助程序lab4_3.m 寻找合适的系统开环增益。

原系统开环增益为K=31.5

仿真结果:

此时系统的相位裕量为-1.25°,从图中可见减小开环增益K使系统穿越频率减小可以增大系统相位裕量。经反复取值得K=16时,相位裕量为30.9°。

程序:

[np,dp]=pade(1,2);

sysp=tf(np,dp);

K=16;

num=K;

d1=[1 1]; d2=[30 1]; d3=[1/9 1/3 1];

den=conv(d1,conv(d2,d3));

sysg=tf(num,den);

sys=series(sysp,sysg);

margin(sys);

仿真结果:

Pm>0,Gm>0,系统稳定,满足要求。

四、实验预习

(1)分析源程序,了解本实验所涉及MATLAB 函数和符号的功能与用法;(2)根据实验内容作出理论分析和计算。

图 4.9 (a) 液位控制系统(b) 系统方框图

五、实验报告

(1)将实验曲线和结果按实验内容进行归纳、整理,分析参数变化对系统的影响,并与理论结果进行

比较,如有矛盾处请分析原因。

(2)可自行增加或设计实验情形,借以充分说明你的结论。 (3)附上所有程序段。

六、思考题

(1)程序 lab4_3.m 将延迟环节e?sT 近似为几阶环节?该近似表达式是怎样的?

答:程序中将延迟环节近似为2阶环节。近似表达式为

程序:

[np,dp]=pade(1,2); sysp=tf(np,dp)

运行结果:

126126sysp 2

2+++-=s s s s 仿真结果:

近似效果如图所示。阶次更高近似效果更好,15阶和30阶的情况分别如图所

示。

现代信号处理Matlab仿真——例611

例6.11 利用卡尔曼滤波估计一个未知常数 题目: 设已知一个未知常数x 的噪声观测集合,已知噪声v(n)的均值为零, 方差为 ,v(n)与x 不相关,试用卡尔曼滤波估计该常数 题目分析: 回忆Kalman 递推估计公式 由于已知x 为一常数,即不随时间n 变化,因此可以得到: 状态方程: x(n)=x(n-1) 观测方程: y(n)=x(n)+v(n) 得到A(n)=1,C(n)=1, , 将A(n)=1,代入迭代公式 得到:P(n|n-1)=P(n-1|n-1) 用P(n-1)来表示P(n|n-1)和P(n-1|n-1),这是卡尔曼增益表达式变为 从而 2v σ1??(|1)(1)(1|1)(|1)(1)(1|1)(1)()()(|1)()[()(|1)()()]???(|)(|1)()[()()(|1)](|)[()()](|1)H w H H v x n n A n x n n P n n A n P n n A n Q n K n P n n C n C n P n n C n Q n x n n x n n K n y n C n x n n P n n I K n C n P n n --=----=----+=--+=-+--=--2()v v Q n σ=()0w Q n =(|1)(1)(1|1)(1)()H w P n n A n P n n A n Q n -=----+21 ()(|1)[(|1)]v K n P n n P n n σ-=--+22(1)()[1()](1)(1)v v P n P n K n P n P n σσ-=--=-+

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

MATLAB仿真实验报告

MATLAB 仿真实验报告 课题名称:MATLAB 仿真——图像处理 学院:机电与信息工程学院 专业:电子信息科学与技术 年级班级:2012级电子二班 一、实验目的 1、掌握MATLAB处理图像的相关操作,熟悉相关的函数以及基本的MATLAB语句。 2、掌握对多维图像处理的相关技能,理解多维图像的相关性质 3、熟悉Help 命令的使用,掌握对相关函数的查找,了解Demos下的MATLAB自带的原函数文件。 4、熟练掌握部分绘图函数的应用,能够处理多维图像。 二、实验条件

MATLAB调试环境以及相关图像处理的基本MATLAB语句,会使用Help命令进行相关函数查找 三、实验内容 1、nddemo.m函数文件的相关介绍 Manipulating Multidimensional Arrays MATLAB supports arrays with more than two dimensions. Multidimensional arrays can be numeric, character, cell, or structure arrays. Multidimensional arrays can be used to represent multivariate data. MATLAB provides a number of functions that directly support multidimensional arrays. Contents : ●Creating multi-dimensional arrays 创建多维数组 ●Finding the dimensions寻找尺寸 ●Accessing elements 访问元素 ●Manipulating multi-dimensional arrays操纵多维数组 ●Selecting 2D matrices from multi-dimensional arrays从多维数组中选择二维矩 阵 (1)、Creating multi-dimensional arrays Multidimensional arrays in MATLAB are created the same way as two-dimensional arrays. For example, first define the 3 by 3 matrix, and then add a third dimension. The CAT function is a useful tool for building multidimensional arrays. B = cat(DIM,A1,A2,...) builds a multidimensional array by concatenating(联系起来)A1, A2 ... along the dimension DIM. Calls to CAT can be nested(嵌套). (2)、Finding the dimensions SIZE and NDIMS return the size and number of dimensions of matrices. (3)、Accessing elements To access a single element of a multidimensional array, use integer subscripts(整数下标). (4)、Manipulating multi-dimensional arrays

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仿真实例-卫星轨迹

卫星轨迹 一.问题提出 设卫星在空中运行的运动方程为: 其中是k 重力系数(k=401408km3/s)。卫星轨道采用极坐标表示,通过仿真,研究发射速度对卫星轨道的影响。实验将作出卫星在地球表面(r=6400KM ,θ=0)分别以v=8KM/s,v=10KM/s,v=12KM/s 发射时,卫星绕地球运行的轨迹。 二.问题分析 1.卫星运动方程一个二阶微分方程组,应用Matlab 的常微分方程求解命令ode45求解时,首先需要将二阶微分方程组转换成一阶微分方程组。若设,则有: 2.建立极坐标如上图所示,初值分别为:卫星径向初始位置,即地球半径:y(1,1)=6400;卫星初始角度位置:y(2,1)=0;卫星初始径向线速度:y(3,1)=0;卫星初始周向角速度:y(4,1)=v/6400。 3.将上述一阶微分方程及其初值带入常微分方程求解命令ode45求解,可得到一定时间间隔的卫星的径向坐标值y(1)向量;周向角度坐标值y(2)向量;径向线速度y(3)向量;周向角速度y(4)向量。 4.通过以上步骤所求得的是极坐标下的解,若需要在直角坐标系下绘制卫星的运动轨迹,还需要进行坐标变换,将径向坐标值y(1)向量;周向角度坐标值y(2)向量通过以下方程转换为直角坐标下的横纵坐标值X,Y 。 5.卫星发射速度速度的不同将导致卫星的运动轨迹不同,实验将绘制卫星分别以v=8KM/s ,v=10KM/s ,v=12KM/s 的初速度发射的运动轨迹。 三.Matlab 程序及注释 1.主程序 v=input('请输入卫星发射速度单位Km/s :\nv=');%卫星发射速度输入。 axis([-264007000-1000042400]);%定制图形输出坐标范围。 %为了直观表达卫星轨迹,以下语句将绘制三维地球。 [x1,y1,z1]=sphere(15);%绘制单位球。 x1=x1*6400;y1=y1*6400;???????-=+-=dt d dt dr r dt d dt d r r k dt r d θ θθ2)(2 22222θ==)2(,)1(y r y ?????????????**-=**+*-===)1(/)4()3(2)4()4()4()1()1()1()3()4()2() 3()1(y y y dt dy y y y y y k dt dy y dt dy y dt dy ???*=*=)] 2(sin[)1(Y )]2(cos[)1(X y y y y

MATLAB全部实验及答案

MATLAB全部实验及答案 实验一、MATLAB基本操作 实验内容及步骤 4、有关向量、矩阵或数组的一些运算 (1)设A=15;B=20;求C=A+B与c=a+b? (2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与 A.*B? A*B就是线代里面的矩阵相乘 A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2? (4)设a=[1 -2 3;4 5 -4;5 -6 7] 请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全 下标的形式),并将其单下标转换成全下标。 clear,clc a=[1 -2 3;4 5 -4;5 -6 7]; [x,y]=find(a<0); c=[]; for i=1:length(x) c(i,1)=a(x(i),y(i)); c(i,2)=x(i); c(i,3)=y(i); c(i,4)=(y(i)-1)*size(a,2)+x(i); end c

(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那 个是虚数矩阵,后面那个出错 (6)请写出完成下列计算的指令: a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=? a^2= 22 16 16 25 26 23 26 24 28 a.^2= 1 4 9 9 16 4 25 4 9 (7)有一段指令如下,请思考并说明运行结果及其原因 clear X=[1 2;8 9;3 6]; X( : ) 转化为列向量 (8)使用三元组方法,创建下列稀疏矩阵 2 0 8 0 0 0 0 1 0 4 0 0 6 0 0 0 方法一: clear,clc

MATLAB仿真实验全部

实验一 MATLAB 及仿真实验(控制系统的时域分析) 一、实验目的 学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点 1、 系统的典型响应有哪些 2、 如何判断系统稳定性 3、 系统的动态性能指标有哪些 三、实验方法 (一) 四种典型响应 1、 阶跃响应: 阶跃响应常用格式: 1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。 2、),(Tn sys step ;表示时间范围0---Tn 。 3、),(T sys step ;表示时间范围向量T 指定。 4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。 2、 脉冲响应: 脉冲函数在数学上的精确定义:0 ,0)(1)(0 ?==?∞ t x f dx x f 其拉氏变换为:) ()()()(1)(s G s f s G s Y s f === 所以脉冲响应即为传函的反拉氏变换。 脉冲响应函数常用格式: ① )(sys impulse ; ② ); ,();,(T sys impulse Tn sys impulse ③ ),(T sys impulse Y = (二) 分析系统稳定性 有以下三种方法: 1、 利用pzmap 绘制连续系统的零极点图; 2、 利用tf2zp 求出系统零极点; 3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析 Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.

Matlab实验第一次实验答案

实验一Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句 3、熟悉Matlab绘图命令及基本绘图控制 4、熟悉Matlab程序设计的基本方法 二、实验内容: 1、帮助命令 使用help命令,查找sqrt(开方)函数的使用方法; 解: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. Remarks See sqrtm for the matrix square root. Examples sqrt((-2:2)') ans = 0 + 1.4142i 0 + 1.0000i

1.0000 1.4142 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 ]; A^2*B (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 ]; A\B,A/B (3)矩阵的转置及共轭转置

Matlab实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (1)从键盘输入一个数,将它反向输出,例如输入693,输出为396 >> clear >> format long g s=input('s=') n=fix(log10(s)); A=0; for i=1:n a=fix(s/10^n); x=fix(mod(s,10^i)/10.^(i-1)); A=A+x*10^(n+1-i); end A+a s=693 s = 693 ans = 396 (2)输入一个百分制成绩,要求输出成绩等级A,B,C,D,E其中90-100位A,80-89为B,70-79为C,60-69为D,60以下为E 1)分别用if语句和switch语句实现 2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出出错信息 If语句 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理');

elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩98 a = 98 A 成绩合理 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理'); elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩148 a = 148 成绩错误 switch语句 >> a=input('输入成绩') switch a; case num2cell(0:59) disp('E 成绩合理'); case num2cell(60:69) disp('D 成绩合理'); case num2cell(70:79) disp('C 成绩合理'); case num2cell(80:89) disp('B 成绩合理'); case num2cell(90:100) disp('A 成绩合理'); otherwise disp('成绩错误'); end

实验二 MATLAB程序设计 含实验报告

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因 c b a 、、的不同取值而定) ,这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2?1 3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. 的值,调用该函数后,

MATLAB实现通信系统仿真实例

补充内容:模拟调制系统的MATLAB 仿真 1.抽样定理 为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。 Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。 抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。 【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。 ts=1/fs; %%根据抽样时间间隔进行抽样,并计算出信号和包络 t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。 envelop=cos(2*pi*t);%%DSB 信号包络 y=cos(2*pi*t).*cos(4*pi*t);%已调信号 %画出已调信号包络线 plot(t,envelop,'r:','LineWidth',3); hold on plot(t,-envelop,'r:','LineWidth',3); %画出已调信号波形 plot(t,y,'b','LineWidth',3); axis([0,pi/2,-1,1])% hold off% xlabel('t'); %写出图例 【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。 ts=1/fs; %%根据抽样时间间隔进行抽样

昆明理工大学MATLAB实验指导书(第二次实验)

************************ MATLAB上机指导书 ************************ 昆明理工大学机电学院 彭用新 2015年3月

实验三符号计算 一、操作部分:在命令窗口执行命令完成以下运算,记录运算结果。 1.findsym:帮助我们获取系统定义的自变量 f= sym('sin(a*x+b*y)'); findsym(f) 2.numden(获取分子分母), sym2poly,(获取多项式时系数)poly2sym(根据多项式系 数获得符号表达式) [n,d]=numden(sym('x*x+y')+sym('y^2')) p=sym('2*x^3+3*x^2+4'); sym2poly(p) x=[2,3,0,4]; poly2sym(x) 3. collect :合并同类项;expand:展开多项式;horner: 分解成嵌套形式;factor:因式 分解;simplify: 对表达式化简 syms x y; collect(x^2*y+y*x-x^2-2*x) collect((x+y)*(x^2+y^2+1), y) syms x y; expand((x-2)*(x-4)) syms x;horner(x^3-6*x^2+11*x-6) syms x;factor(x^3-6*x^2+11*x-6) syms x;simplify((x^2+5*x+6)/(x+2)) 4. finverse :求得符号函数的反函数。 syms x y; finverse(1/tan(x)) f= x^2+y; finverse(f,y) finverse(f) https://www.doczj.com/doc/ef13964813.html,pose 求符号函数的复合函数 syms x y; f = 1/(1 + x^2); g = sin(y); compose(f,g) 6. subs :表达式替换。 syms a b;subs(a+b,a,4)

增量调制MATLAB仿真实验

增量调制MATLAB仿真实验

增量调制(DM)实验 一、实验目的 (1)进一步掌握MATLAB的应用。 (2)进一步掌握计算机仿真方法。 (3)学会用MATLAB软件进行增量调制(DM)仿真实验。 二、实验原理 增量调制是由PCM发展而来的模拟信号数字化的一种编码方式,它是PCM的一种特例。增量调制编码基本原理是指用一位编码,这一位码不是表示信号抽样值的大小,而是表示抽样幅度的增量特性,即采用一位二进制数码“1”或“0”来表示信号在抽样时刻的值相对于前一个抽样时刻的值是增大还是减小,增大则输出“1”码,减小则输出“0”码。输出的“1”,“0”只是表示信号相对于前一个时刻的增减,不表示信号的绝对值。 增量调制最主要的特点就是它所产生的二进制代码表示模拟信号前后两个抽样值的差别(增加、还是减少)而不是代表抽样值本身的大小,因此把它称为增量调制。在增量调制系统的发端调制后的二进制代码1和0只表示信号这一个抽样时刻相对于前一个抽样时刻是增加(用1码)还是减少(用0码)。收端译码器每收到一个1码,译码器的输出相对于前一个时刻的值上升一个量化阶,而收到一个0码,译码器的输出相对于前一个时刻的值下降一个量化阶。 增量调制(DM)是DPCM的一种简化形式。在增量调制方式下,采用1比特量化器,即用1位二进制码传输样值的增量信息,预测器是

一个单位延迟器,延迟一个采样时间间隔。预测滤波器的分子系数向量是[0,1],分母系数为1。当前样值与预测器输出的前一样值相比较,如果其差值大于零,则发1码,如果小于零则发0码。 三、实验内容 增量调制系统框图如图一所示,其中量化器是一个零值比较器,根据输入的电平极性,输出为 δ,预测器是一个单位延迟器,其输出为前一个采样时刻的解码样值,编码器也是一个零值比较器,若其输入为负值,则编码输出为0,否则输出为1。解码器将输入1,0符号转换为 δ,然后与预测值相加后得出解码样值输出,同时也作为预测器的输入 输入样值 e n e n =δsgn(e n ) 传输 n ) n n-1+δsgn(e n ) x n + - + + 预测输出 + n-1 + 预测输出 解码样值输出 x n-1 预测输入x n =x n-1+δsgn(e n ) 图一 增量调制原理框图 设输入信号为: x(t)=sin2π50t+0.5sin 2π150t 增量调制的采样间隔为1ms,量化阶距δ=0.4,单位延迟器初始值为0。建立仿真模型并求出前20个采样点使客商的编码输出序列以 解码 编码 二电平量化 单位延迟 单位 延迟

MATLAB第二次上机实验报告

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

一、实验名称 实验二 线性方程组求解和函数的数值逼近 二、实验目的 通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步的理解。 实验涉及的核心知识点:病态方程求解、矩阵分解和方程组求解、Lagrange 插值。 实验重点与难点:算法设计和MATLAB 编程 三、实验内容 1. 对高阶多项式 ()()() ()()20 1 1220k p x x x x x k ==---=-∏ 编程求下面方程的解 ()190p x x ε+= 并绘图演示方程的解与扰动量ε的关系。 2. 对2 20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量 b 的方法,确定方程组 ()n H x b = 最后,用矩阵分解方法求解方程组,并分析计算结果。 3. 对函数 ()2 1 125f x x = + []1,1x ∈- 的Chebyshev 点 ()()21cos 21k k x n π ?? -= ? ?+? ? ,1,2,,1k n =+ 编程进行Lagrange 插值,并分析插值结果。 四、实验数据及结果分析 1. 对高阶多项式

()()() ()()20 1 1220k p x x x x x k ==---=-∏ 编程求下面方程的解 ()190p x x ε+= 并绘图演示方程的解与扰动量ε的关系。 p=[1,-1]; for i=2:20 n=[1,-i]; p=conv(p,n); % 求多项式乘积 end m=zeros(1,21); % m 的最高次幂为20,有21项 hold on x=1:20; d=[-1,0,0.1,0.5,1]; for i=1:5 delt=d(i); m(2)=delt; y=(roots(p+m))'; % 求多项式的根 plot(x,y,'-o','color',[i/5,i/20,i/10]); end title('方程p(x)=0的解与扰动量delt 的关系') legend('delt=-1','delt=0','delt=0.1','delt=0.5','delt=1') 2468101214161820 010 20 30 40 50 60 方程p(x)=0的解与扰动量delt 的关系 delt=-1delt=0delt=0.1delt=0.5delt=1

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

高频电子线路Matlab仿真实验

高频电子线路Matlab 仿真实验要求 1. 仿真题目 (1) 线性频谱搬移电路仿真 根据线性频谱搬移原理,仿真普通调幅波。 基本要求:载波频率为8kHz ,调制信号频率为400Hz ,调幅度为0.3;画出调制信号、载波信号、已调信号波形,以及对应的频谱图。 扩展要求1:根据你的学号更改相应参数和代码完成仿真上述仿真;载波频率改为学号的后5位,调制信号改为学号后3位,调幅度设为最后1位/10。(学号中为0的全部替换为1,例如学号2010101014,则载波为11114Hz ,调制信号频率为114,调幅度为0.4)。 扩展要求2:根据扩展要求1的条件,仿真设计相应滤波器,并获取DSB-SC 和SSB 的信号和频谱。 (2) 调频信号仿真 根据调频原理,仿真调频波。 基本要求:载波频率为30KHz ,调制信号为1KHz ,调频灵敏度32310f k π=??,仿真调制信号,瞬时角频率,瞬时相位偏移的波形。 扩展要求:调制信号改为1KHz 的方波,其它条件不变,完成上述仿真。 2. 说明 (1) 仿真的基本要求每位同学都要完成,并且记入实验基本成绩。 (2) 扩展要求可以选择完成。

1.0 >> ma = 0.3; >> omega_c = 2 * pi * 8000; >> omega = 2 * pi * 400; >> t = 0 : 5 / 400 / 1000 : 5 / 400; >> u_cm = 1; >> fc = cos(omega_c * t); >> fa = cos(omega * t); >> u_am = u_cm * (1 + fa).* fc; >> U_c =fft(fc,1024); >> U_o =fft(fa,1024); >> U_am =fft(u_am, 1024); >> figure(1); >> subplot(321);plot(t, fa, 'k');title('调制信号');grid;axis([0 2/400 -1.5 1.5]); >> subplot(323);plot(t, fc, 'k');title('高频载波');grid;axis([0 2/400 -1.5 1.5]); >> subplot(325);plot(t, u_am, 'k');title('已调信号');grid;axis([0 2/400 -3 3]); >> fs = 5000; >> w1 = (0:511)/512*(fs/2)/1000; >> subplot(322);plot(w1, abs([U_am(1:512)']),'k');title('调制信号频谱');grid;axis([0 0.7 0 500]); >> subplot(324);plot(w1, abs([U_c(1:512)']),'k');title('高频载波频谱');grid;axis([0 0.7 0 500]); >> subplot(326);plot(w1, abs([U_am(1:512)']),'k');title('已调信号频谱');grid;axis([0 0.7 0 500]); 1.1 >> ma = 0.8; >> omega_c = 2 * pi * 11138; >> omega = 2 * pi * 138; >> t = 0 : 5 / 400 / 1000 : 5 / 400; >> u_cm = 1; >> fc = cos(omega_c * t);

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

Matlab 编程方法及仿真实验

《现代机械工程基础实验》之机械工程控制基础综合实验报告 姓名 学号 班级 山东建筑大学机电工程学院 2012.06.04~06

第一部分 Matlab 编程方法及仿真实验 实验1. 三维曲面的绘制(略) 实验2. 系统零极点绘制例:求部分分式展开式和)(t g 一个线性定常系统的传递函数是 1 5422 3)(2 3 ++++= s s s s s G (1) 使用MATLAB 建立传递函数,并确定它的极点和零点,写出)(s G 的部分分式展开式并绘制 系统的脉冲响应。 实验结果:零点-0.6667 极点-0.8796 + 1.1414i -0.8796 - 1.1414i -0.2408 实验3. 系统的阶跃响应 例. )(s G 的阶跃响应 对例2中由(1)式给出的传递函数)(s G ,增加一个0=s 处的极点,使用impulse 命令绘制其拉普拉斯反变换式曲线,得到阶跃响应图。将该响应与对)(s G 使用step 命令所得到的响应比较,确定系统的DC 增益。利用初值定理和终值定理来校验结果。 实验结果:DC 增益= 2

实验4. 双输入反馈系统单位阶跃响应 考虑一个如图1所示的反馈系统,它既有参考输入也有干扰输入,其中对象和传感器的传递函数是 )12)(15.0(4)(++=s s s G p ,105.01 )(+=s s H 控制器是一个增益为80,有一个在3-=s 处的零点,极点/零点比15=α超前控制器。推导 两个独立的MATLAB 模型,其中一个模型的输入为)(s R ,另一个输入为)(s D 。使用这些模型确定闭环零点和极点,并在同一坐标系内绘制它们的阶跃响应。 D (s ) 图1 具有参考和干扰输入的反馈系统方框图 实验结果: 参考输入的CL 极点:-49.3658 -7.3336 + 7.9786i -7.3336 - 7.9786i -3.4670 参考输入的DC 增益:320 干扰输入的CL 零点:-45 干扰输入的CL 极点:-49.3658 -7.3336 + 7.9786i -7.3336 - 7.9786i -3.4670 干扰输入的DC 增益:4 -20

第二次数学实验报告Matlab 二维曲线绘图

《数学实验》报告实验名称 Matlab 二维曲线绘图 2011年 5月

一、【实验目的】 学习Matlab 绘图的运用,学会制作二维曲线,三维图形的绘画。 二、【实验任务】 P79 第3,5,9题。 1,在同一图形窗口画三个子图…… 2,绘制圆锥螺线的图像并加各种标注…… 3,画三维曲面z=5-x^2-y^2与平面z=3的交线。 三、【实验程序】 1. >> clear >> x=-pi:pi/50:4*pi; y1=x.*cos(x); y2=x.*tan(1./x).*sin(x.^3); y3=exp(1./x).*sin(x); subplot(3,1,1) plot(x,y1,'r*'),grid on title('y1=xcosx') xlabel('x轴'),ylabel('y轴') axis([-pi pi -pi pi]) gtext('y1=xcosx'),legend('y1=xcosx') subplot(3,1,2),plot(x,y2,'b'),grid on title('y=xtan(1/x)sin(x^3)') gtext('y=xtan(1/x)sin(x^3)') legend('y=xtan(1/x)sin(x^3)') axis([pi 4*pi -2 2]) subplot(3,1,3),plot(x,y3,'y'),grid on title('y=exp(1/x)sinx') xlabel('x轴'),ylabel('y轴') gtext('y=exp(1/x)sinx') legend('y=exp(1/x)sinx') axis([1 8 -3 3]) 2. >> clear >> t=0:pi/50:20*pi; x=t.*cos(pi/6.*t); y=t.*sin(pi/6.*t); z=2.*t; plot3(x,y,z) title('圆锥螺线') xlabel('x轴'),ylabel('y轴'),zlabel('z轴') >> t=0:pi/50:20*pi; x=t.*cos(pi/6.*t);

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