搜档网
当前位置:搜档网 › 控制系统Bode图的Matlab实验

控制系统Bode图的Matlab实验

控制系统Bode图的Matlab实验
控制系统Bode图的Matlab实验

红河学院工学院实验报告单

《机械工程控制基础》Matlab 仿真实验报告单

课程名称:

姓名:

日期:

成绩:

年级专业: 学号: 实验场地:

实验序号: 4

实验名称:控制系统Bode 图的Matlab 实验

一、实验内容。

已知控制系统开环传递函数,绘制开环传递函数Bode 图,。

1000()(1)(2)(5)

K G s s s s =

+++ 二、实验目的。

1、熟悉Matlab 操作

2、掌握Matlab 中,绘制传递函数的Bode 图。

三、相关Matlab 仿真程序。

已知控制系统开环传递函数,绘制开环传递函数Bode 图。

1000()(1)(2)(5)

K G s s s s =+++

相关程序:

clear

num=1000;

den=conv([1 1],conv([1 2],[1 5]));

GKs=tf(num,den)

w=logspace(-2,3,100);

bode(GKs,w);

grid on

margin(GKs)

四、相关Matlab仿真图形。

五、判断系统稳定性,并说明理由。

幅值裕度的值为-18dB

相位裕度的值为-44.4deg

剪切频率 4.12rad/sec

相位穿越频率9.51rad/sec

从图形中可以看出来,剪切频率大于相位穿越频率,又因为其开环传递是最小相位系统,所以其闭环系统不稳定。

另一方面,幅值裕度和相位裕度都为负值,也证明其闭环系统不稳定。

Matlab中Bode图的绘制技巧(精)

Matlab中Bode图的绘制技巧 我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。 譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。 我们可以用下面的语句: num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den; bode(H 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。 下面,我们来看看如何定制我们自己的伯德图风格: 在命令窗口中输入:bodeoptions

我们可以看到以下内容:ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct] TickLabel: [1x1 struct] Grid: 'off' XLim: {[1 10]} XLimMode: {'auto'} YLim: {[1 10]} YLimMode: {'auto'} IOGrouping: 'none' InputLabels: [1x1 struct] OutputLabels: [1x1 struct] InputVisible: {'on'} OutputVisible: {'on'} FreqUnits: 'rad/sec' FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear' MagVisible: 'on' MagLowerLimMode: 'auto' MagLowerLim: 0 PhaseUnits: 'deg' PhaseVisible: 'on' PhaseWrapping: 'off'

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆if-else-end分支结构 if 表达式1 语句1 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

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中bode图绘制技巧(精)

Matlab中Bode图的绘制技巧学术收藏2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。我们可以用下面的语句:num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den; bode(H 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions 我们可以看到以下

内容:ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct]TickLabel: [1x1 struct]Grid: 'off' XLim: {[1 10]}XLimMode: {'auto'}YLim: {[1 10]} YLimMode: {'auto'}IOGrouping: 'none'InputLabels: [1x1 struct]OutputLabels: [1x1 struct]InputVisible: {'on'} OutputVisible: {'on'}FreqUnits: 'rad/sec'FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear'MagVisible: 'on' MagLowerLimMode: 'auto'MagLowerLim: 0PhaseUnits: 'deg'PhaseVisible: 'on'PhaseWrapping: 'off' PhaseMatching: 'off'PhaseMatchingFreq: 0 PhaseMatchingValue: 0我们可以通过修改上面的每一 项修改伯德图的风格,比如我们使用下面的语句画我 们的伯德图:P=bodeoptions;P.Grid='on'; P.XLim={[10 40000]};P.XLimMode={'manual'};P.FreqUnits='HZ'; num=[1.576e010 0 0];den=[1 1.775e005 1.579e010 2.804e012 2.494e014];H=tf(num,den; bode(H,P 这时,我们将会看到以下的伯德图: 上面这张图相对就比较好了,它的横坐标单位 是HZ,范围是[10 40K]HZ,而且打开了网格,便于我 们观察-3DB处的频率值。当然,你也可以改变bodeoptions中的其它参数,做出符合你的风格的伯

典型环节的Bode图资料

典型环节的B o d e图

控制系统的开环频率特性 目的:掌握开环Bode图的绘制 根据Bode图确定最小相位系统的传递函数 重点:开环Bode图的绘制、根据Bode图确定最小相位系统的传递函数 1 开环伯德图手工作图的一般步骤: 1)将开环传递函数表示为时间常数表达形式,计算各个典型环节的交接频率 2)求20lgK的值,并明确积分环节的个数ν3)通过(1,20lgK)绘制斜率为-20vdB/dec 低频段 4)随着频率增加,每遇到一个典型环节的交接频率,就改变一次斜率 最小相位系统定义:递函数的零点、极点全部位于S 左半平面,同时又无纯滞后环节的系统称为最小相位系统。否则就是非最小相位系统。 对数幅频特性与相频特性之间存在确定的对应关系。对于一个最小相位系统,我们若知道了其幅频特性,它的相频特性也就唯一地确定了。也就是说:只要知道其幅频特性,就能写出此最小相位系统所对应的传递函数,而无需再画出相频特性。 非最小相位系统高频时相角迟后大,起动性能差,响应缓慢。对响应要求快的系统,不宜采用非最小相位元件。 Tf函数用来建立实部或复数传递函数模型或将状态方程、或零级增益模型转化成传递函数形式。sys = tf(num,den)命令可以建立一个传递函数,其中分子和分母分别为num和den。输出sys是储存传递函数数据的传递函数目标。单输入单输出情况下,num和den是s的递减幂级数构成的实数或复数行向量。这两个向量并不要求维数相同。如h = tf([1 0],1)就明确定义了纯导数形式h(s)=s。若要构建多输入多输出传递函数,要分别定义每一个单输入单输出系统的端口的分子与分母。 2 典型环节的伯德图 绘制曲线在MATLAB中实现,利用下述的程序段: num=[b2 b1 b0]; den=[1 a2 a1 a0];H=tf(num,den); bode(H) margin(H) hold on 2.1 比例环节 传递函数:() G s K = 频率特性:() G j K ω= 对数幅频特性:()20lg L j K ω= 对数相频特性:()0 ?ω= 程序段: num=[0 10]; den=[0 1]; H=tf(num,den); bode(H) margin(H) hold on 结论:放大环节的对数幅频特性是一条幅值为20lgK分贝,且平行于横轴的直线,相频特性是一条和横轴重合的直线。 K>1时,20lgK>0dB;K<1时,20lgK<0dB。2.2 惯性环节(低通滤波特性) 传递函数:1 () 1 G s sτ = + 频率特性:() ()()j G j A e?ω ωω = 对数幅频特性: 2 () 1() Lω τω = + 对数相频特性:()arctan ?ωτω =- 绘制1 () 10.1 G s s = + 的Bode图 程序段: num=[0 1]; den=[0.1 1];H=tf(num,den); bode(H) margin(H) hold on

实验四 MATLAB程序设计

实验四 MATLAB 程序设计 1.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

使用simulink bode图的绘制

在Matlab中,大多时候,我们都是用M语言,输入系统的传递函数后,用bode函数绘制bode图对系统进行频率分析,这样做,本人觉得效率远不如Simulink建模高。如何在Matlab/Simulink中画bode图,以前也在网上查过些资料,没看到太多有用的参考。今天做助教课的仿真,又要画电机控制中电流环的bode图,模型已经建好,step response也很容易看出来,可这bode图怎么也出不来,又不愿意用m语言写出传递函数再画。baidu和google 了好一阵,几乎没有一个帖子说的清清楚楚的,经过一番摸索,终于掌握了Simulink里画bode图的方法。.其实,Simulink里画bode图,非常的easy,也很方便。写此文的目的是希望对那些常用Simulink进行仿真希望画bode图又不愿用M语言的新手有所帮助。 以下均是以Matlab R2008a为例。 首先,在simulink里建好model。如图1,这里需要注意的是,输入和输出要用input port 和output port,这样以后画bode图的时候,系统就会知道是这两个变量之间的关系。 图1 建好model 其次,选择线性分析。Tools->Control Design ->Linear Analysis。如图2。 图2 选择Linear Ansysis 将出现如图3所示的Control and Estimation Tools Manager窗口。

图3 Control and Estimation Tools Manager窗口 第三步,激动人心的时刻到了,哈哈。如果你是按照前面的步骤来的,那么这时候,你就应该可以直接画出bode图,在窗口的下方,将“Plot linear analysis result in a ”前面的方框打上勾,已打的就不用管了,再在后面的下拉框里选择“bode response plot”,即画output port和input port之间的bode图,再点击“Linearize Model”按钮,就OK了。其实除了bode图,还可以画其他很多响应曲线,比如step response、impulse response和Nyquist图等等,只需选择相应的step response plot,inpulse response plot或者Nyquist plot等等。方法都是相同的。选择选择“bode response plot”,如图4所示。 图4 画出bode图

实验三MATLAB程序设计

2014秋2012级《MATLAB程序设计》实验报告班级:软件C121姓名:冯杨腾学号:125692 实验三 MATLAB程序设计 一、实验目的 1、掌握建立和执行M文件的方法。 2、掌握选择结构、多分支选择结构程序的编程方法。 3、掌握多种循环结构程序的编程方法。 4、掌握定义函数文件和调用函数文件的方法。 二、实验内容 1、MATLAB M文件的创建与使用。 (1)建立自己工作目录,如D:\MATLAB。在File菜单中,单击 Set Path菜单项,在弹出对话框中建立目标文件夹,:单击Add Folder按钮,将自己的工作目录D:\MATLAB添加到搜索目录 之中,按Save按钮保存,如图1。 图1 工作目录设置 (2)在M文件编辑器中编制命令行文件。在File菜单中,单击 New—>M-File,弹出M文件编辑器,如图2:

图2 编辑器 在编辑器中输入如下命令程序: %求小于2000且为2的整数次幂的正整数。 f(1)=2; k=1; while f(k)<1000 f(k+1)=f(k)*2; k=k+1; end f,k 调试后,将其以形式保存在D:\MATLAB中。 (3)命令行程序运行。进入命令窗口,键入test1,观察运行结果: f = Columns 1 through 9 2 4 8 16 32 64 128 256 512 Column 10 1024 k = 10 (4)按上述步骤,在在编辑器中输入如下函数文件:

function f=tt(n) %求小于任何正整数且为2的整数次幂的正整数。 %c=n(n) %n 可取任意正整数。 %2004年8月。 f(1)=2; k=1; while f(k)> test2(9) f = 2 4 8 ans = 2 4 8 2、编写一个函数M 文件,计算下面函数的值,给出标量x 的值,调用该函数后,返回y 的值。 sin , (), 036,3 x x y x x x x x ≤??=<≤??-+>? 选择一些数据测试编写的函数。 源程序 :

实验五 M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题 1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用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等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits:3 a = 3 10 5 16 8 4 2 1 2. 编程求满足∑=>m i i 1100002的最小m 值。 a=0; i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m 13 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x) ?? ???>+-≤<≤=3,630, 0,sin )(x x x x x x x y 选择一些数据测试你编写的函数。 function y=myfun1(x) if x<=0 y=sin(x);

BODE图 画图过程

电机定位系统校正(BODE图) MATLAB软件具有强大的计算能力和绘图功能,能够快速、准确地做出频域特性曲线。利用MATLAB绘制系统的Bode图,为控制系统设计和分析提供了极大的方便。 1. 创建M-file文挡,并输入如下程序,运行后生成LTI对象my_sys: J=3.2284e-6; b=3.5077e-6; K=0.0274; R=4; L=2.75e-6; num=[0 0 0 K]; den=[(J*K) (J*R+(L*b)) ((b*R)+K^2) 0]; my_sys=tf(num,den); 打开Matlab7.0软件,并新建一个空文档,将程序复制到文档内,如图1所示: 图1 2.运行程序并保存运行结果。如图2所示: 图2

3.打开Start-Toolboxes—Control System—SISO Design Tool。启动SISO Design,如图3所示 图3 4.将my_sys程序导入到SISO Design Tool中,如图4所示 图4

5.在View菜单中,关闭根轨迹显示,只显示开环的Bode图。如图5所示 图5 6. 加积分环节;加零点(60角频率)将各个参数进行积分:空白处右键—Add Pole/Zero—Integrator。如图6所示: 图6

7.在magnitude曲线加零点,然后Analysis菜单下Response to Step Command 指令。如图7所示: 图7 8.在管理反馈界面中,只显示闭环的r与y的关系—LT1 Viewer For SISO Design Tool界面空白处右键—Systems—Closed Loop :r to u (green),如图8所示: 图8

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

实验二M A T L A B程序设计含实验报告 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 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。如: 21 3105168421 63105168421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y 5. (Root Mean Square)的计算(1(2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。 6.根据2 2222 1......3121116n ++++=π,求π的近似值。当n 分别取100、1000、10000时,结果是多少 思考题:

matlab实验二实验报告及程序

昆明理工大学信息工程与自动化学院学生实验报告 ( 2011——2012 学年 第一学期 ) 课程名称:控制系统计算机辅助设计 开课实验室:信自楼 234 2011年10月28日 年级、专业、班 学号 姓名 成绩 实验项目名称 实验二 控制系统分析 指导教师 胡蓉 教师评 语 该同学是否熟悉实验内容: A.熟悉□ B.比较熟悉□ C.不熟悉□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求 : A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□ B.一般 □ C.没有 □ 注:5个A 为优,5个B 为中,介于二者间为良,5个C 为不及格,3个B以上为及格。 教师签名: 年 月 日 实验二 控制系统分析 一、 实验目的 1. 掌握如何使用Matlab 进行系统的时域分析。 2. 掌握如何使用Matlab 进行系统的频域分析。 3. 掌握如何使用Matlab 进行系统的根轨迹分析。 4. 掌握如何使用Matlab 进行系统的稳定性分析。 二、 实验内容 1.时域分析 (1)典型二阶系统传递函数为:

当ζ=0.7, ω 取2、4、6、8、10、12的单位阶跃响应。 n 程序为:>> num1=4;den1=[1,2.8,4];sys1=tf(num1,den1); >> num2=16;den2=[1,5.6,16];sys2=tf(num2,den2); >> num3=36;den3=[1,8.4,36];sys3=tf(num3,den3); >> num4=64;den4=[1,11.2,64];sys4=tf(num4,den4); >> num5=100;den5=[1,14,100];sys5=tf(num5,den5); >> num6=144;den6=[1,16.8,144];sys6=tf(num6,den6); >> step(sys1,sys2,sys3,sys4,sys5,sys6); 运行单位阶跃响应结果图为: (2)典型二阶系统传递函数为: 当ω =6, ζ取0.2、0.4、0.6、0.8、1.0、1.5、2.0的单位阶跃响应。 n

1实验一 Matlab程序设计与M文件(1)

实验一 Matlab 程序设计与M 文件 一、实验目的 1. 掌握Matlab 程序设计常用命令,如,循环、选择、暂停、显示输出、输入变量值等。 2. 掌握Matlab 的M 文件的创建于使用,包括脚本文件和函数文件。 3. 掌握常用的编程技巧。 二、实验内容 1. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。其中90分~100分为A ,80分~89分为B ,79分~79分为C ,60分~69分为D ,60分以下为E 。 要求: (1) 分别用if 语句和switch 语句实现。 (2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 2. 硅谷公司员工的工资计算方法如下: (1) 工作时数超过120小时者,超过部分加发15%。 (2) 工作时数低于60小时者,扣发700元。 (3) 其余按每小时84元计发。 试编程按输入的工号和该号员工的工时数,计算应发工资。 3. 根据2 222211116123n π=++++,求π的近似值。当n 分别取100、1000、10000时,结果是多少? 要求:分别用循环结构和向量运算(使用sum 函数)来实现。 4. 考虑以下迭代公式: 1n n a x b x +=+ 其中a 、b 为正的学数。 (1) 编写程序求迭代的结果,迭代的终止条件为|x n+1-x n |≤10-5,迭代初值x 0=1.0,迭代次数不超过500次。 (2) 如果迭代过程收敛于r ,那么r 的准确值是,当(a,b)的值 取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

5. 已知 12312311021 323 n n n n f n f n f n f f f f n ---==??==??==??=-+>? 求f 1~f 100中: (1) 最大值、最小值、各数之和。 (2) 正数、零、负数的个数。 6. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。求[2,50]区间内: (1) 亲密数对的对数。 (2) 与上述亲密数对对应的所有亲密素数之和。 7. 设2411()(2)0.1(3)0.01 f x x x =+-+-+,编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。 8. 一物理系统可用下列方程组来表示: 111211 12 220cos sin 0sin 0cos 000sin 000cos 1a m m a m g m N m N m g θθθθθθ--??????????????????=??????-??????-?????? 从键盘输入m 1、m 2和θ的值,求a 1、a 2、N 1和N 2的值。其中g 取9.8,输入θ时以角度为单位。 要求:定义一个求解线性方程组AX=B 的函数文件,然后在命令文件中调用该函数文件。

实验1 MATLAB使用方法和程序设计

实验1 MATLAB 使用方法和程序设计 一、实验目的 1、掌握MATLAB 软件使用的基本方法。 2、熟悉MATLAB 的数据表示、基本运算和程序控制语句。 3、熟悉MATLAB 绘图命令及基本绘图控制。 4、熟悉MATLAB 程序设计的基本方法。 二、实验内容 1.帮助命令 使用Help 命令,查找sqrt (开方)函数的使用方法。 2、矩阵运算 (1)矩阵乘法 已知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 。 (3) 矩阵的转置及共轭转置 已知A=[5+i ,2-i ,1;6*i ,4,9-i];求A.’,A ’ 。 (4)使用冒号选出指定元素 已知A=[1 2 3 ; 4 5 6 ; 7 8 9]; 求A 中第3列前2个元素;A 中所有列第2,3行的元素。 (5)方括号[] 用magic 函数生成一个4阶魔术矩阵,删除该矩阵的第四列。 3、多项式 (1)求多项式p(x)=x 3-2x-4的根。 (2)求 f (x) = (cos x)2 的一次导数。 (3)求微分方程 的通解,并验证。 4、基本绘图命令 (1)绘制余弦曲线cost =y , ]2,0[π∈t 。 (2)在同一坐标系中绘制余弦曲线 0.25)-cos(t =y 和正弦曲线 )5.0sin(-=t y ,]2,0[π∈t (3)用plot3函数绘制三维螺线: 22x dy xy xe dx -+= sin()cos()x t y t z t =??=??=?( 0 < t < 20 )

数字信号处理实验全部程序MATLAB

实验一熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。 (2)学会简单的矩阵输入和数据读写。 (3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 实验程序: A=[1 2 3 4]; B=[3 4 5 6]; n=1:4; C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B; subplot(4,2,1);stem(n,A,'fill');xlabel ('时间序列n');ylabel('A'); subplot(4,2,2);stem(n,B,'fill');xlabel ('时间序列n ');ylabel('B'); subplot(4,2,3);stem(n,C,'fill');xlabel ('时间序列n ');ylabel('A+B'); subplot(4,2,4);stem(n,D,'fill');xlabel ('时间序列n ');ylabel('A-B'); subplot(4,2,5);stem(n,E,'fill');xlabel ('时间序列n ');ylabel('A.*B'); subplot(4,2,6);stem(n,F,'fill');xlabel ('时间序列n ');ylabel('A./B'); subplot(4,2,7);stem(n,G,'fill');xlabel ('时间序列n ');ylabel('A.^B'); 运行结果:

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 使用方法和程序设计 一、实验目的 1、掌握Matlab 软件使用的基本方法; 2、熟悉Matlab 的数据表示、基本运算和程序控制语句 3、熟悉Matlab 绘图命令及基本绘图控制 4、熟悉Matlab 程序设计的基本方法调试方法。 二、实验内容: 1、帮助命令 使用help 命令,查找 sqrt (开方)函数的使用方法; 2、矩阵运算 (1)矩阵的乘法 已知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 (3)矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i]; 求A.', A' (4)使用冒号选出指定元素 已知: A=[1 2 3;4 5 6;7 8 9]; 求A 中第3列前2个元素;A 中所有列第2,3行的元素; 3、多项式 (1)求多项式42)(3--=x x x p 的根 (2)已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4],求矩阵A 的特征多项式; 4、基本绘图命令 (1)在同一坐标系中绘制余弦曲线y=cos(t),y=cos(t-0.25)和正弦曲线y=sin(t-0.5), t ∈[0,2π] (2)绘制[0,4π]区间上的x1=10sint 曲线,并要求: 1)线形为点划线、颜色为红色、数据点标记为加号; 2)坐标轴控制:显示范围、刻度线、网络线; 3)标注控制:坐标轴名称、标题、相应文本; 5、基本程序设计 (1)编写命令文件:计算1+2+??+n<2000时的最大n 值; (2)编写函数文件:分别用for 和while 循环结构编写程序,求2的0到n 次幂的和。 三、预习要求 利用所学知识,编写实验内容中2到5的相应程序,并写在预习报告上。

MATLAB中bode图绘制技巧

Matlab中Bode图的绘制技巧 学术收藏 2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅 我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。 譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s)= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。) 我们可以用下面的语句: num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den); bode(H) 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。

下面,我们来看看如何定制我们自己的伯德图风格: 在命令窗口中输入:bodeoptions 我们可以看到以下内容: ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct] TickLabel: [1x1 struct] Grid: 'off' XLim: {[1 10]} XLimMode: {'auto'} YLim: {[1 10]} YLimMode: {'auto'} IOGrouping: 'none' InputLabels: [1x1 struct] OutputLabels: [1x1 struct] InputVisible: {'on'} OutputVisible: {'on'} FreqUnits: 'rad/sec' FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear' MagVisible: 'on' MagLowerLimMode: 'auto' MagLowerLim: 0 PhaseUnits: 'deg' PhaseVisible: 'on' PhaseWrapping: 'off' PhaseMatching: 'off' PhaseMatchingFreq: 0 PhaseMatchingValue: 0 我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图: P=bodeoptions; P.Grid='on'; P.XLim={[10 40000]}; P.XLimMode={'manual'}; P.FreqUnits='HZ'; num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den); bode(H,P) 这时,我们将会看到以下的伯德图:

相关主题