当前位置:文档之家› MATLAB实验讲义

MATLAB实验讲义

MATLAB实验讲义
MATLAB实验讲义

MATLAB 实验讲义

编写:程俊

实验一 MATLAB 数值计算/绘图

一、目的和要求

1.掌握MATLAB 矩阵和数组的运算; 2.熟悉MATLAB 多项式的运用; 3.熟练掌握MATLAB 二维曲线的绘制; 4.掌握三维图的绘制

二、内容和步骤 1、 矩阵的运算

MATLAB 的矩阵运算功能是非常强大的,提供了对矩阵的加、减、乘、除等基本运算,以及矩阵的转置、求特征值、矩阵分解等功能。

(1) 利用矩阵除法解线性方程组

已知方程组

12

224732258

232432143214321421=+++=-+-=+++=+-x x x x x x x x x x x x x x x

将方程组表示为AX=B ,计算X=A\B 。 程序如下:请记录结果。

a=[2 -3 0 2;1 5 2 1;3 -1 1 -1;4 1 2 2]; b=[8;2;7;12]; x=a\b

(2) 利用矩阵的基本运算求解矩阵方程。 已知矩阵A 和B 满足关系式A -1

BA=6A+BA ,

其中????

??????=7/10004/10003/1A ,计算矩阵B 。 程序如下,请记录结果并编程验证结果的正确性。

A=[1/3 0 0;0 1/4 0;0 0 1/7]; B=inv(A)*inv(inv(A)-eye(3))*6*A

(3) 计算矩阵的特征值和特征向量。

已知矩阵????

??????--=1104152021X ,计算其特征值和特征向量。 程序如下,请记录结果并编程验证结果的正确性。 x=[1 2 0;2 5 -1;4 10 -1];

[v,d]=eig(x)

练习:将矩阵的乘、除运算改为数组的点乘和点除运算,查看结果。

2、 多项式的运算

(1)多项式的运算。多项式的加、减运算必须具有相同的阶次。低阶必须补0。乘、除分别用conv 和deconv 函数来实现。

已知表达式)96)(5)(4()(2+-+-=x x x x x G ,展开多项式形式,并计算当x 在 [0,20]范围变化时G(x)的值,计算G(x)=0的根。

程序如下,记录结果并编程验证多项式积的正确性。(思路:p1为G 除以p2,p2) p1=[1 -4]; p2=[1 5]; p3=[1 -6 9]; G=conv(p1,p2); G=conv(G,p3); x=0:20;

y=polyval(G,x) x0=roots(G)

(2)多项式的拟合与插值。

将多项式180129175)(2

3

4

-+--=x x x x x G ,当x 在[0,20]范围时多项式的值y 上下加上随机数的偏差构成y1,对y1进行拟合。

程序如下 G=[1 -5 -17 129 -180]; x=0:20;

y=polyval(G,x); y0=0.1*randn(1,21) y1=y+y0

G1=polyfit(x,y1,4)

记录拟合的多项式y1,对多项式y 和y1分别进行插值,计算在5.5处的值,并记录。 s=interp1(x,y,5.5) s1=interp1(x,y1,5.5) 3、 绘制二维、三维曲线

(1)绘制如下要求的图形

把图形窗口分割成2列2行,窗口左上角画一正弦曲线]2,0[),2sin(∈=t t y π;窗口右上角画3条衰减的单边指数曲线]2,0[,,,32∈===---t e y e y e y t t t ;窗口左下角画一矩形脉冲信号,脉冲宽度为1,高度为2,开始时间为1;窗口右下角画一单位圆。

subplot(2,2,1)

t1=0:0.1:2;

y1=sin(2*pi*t1); plot(t1,y1);

title('y=sin(2\pit)'); subplot(2,2,2) t2=0:0.1:2;

y2=[exp(-t2);exp(-2*t2);exp(-3*t2)]; plot(t2,y2);

axis([0 2 -0.2 1.2]);

title('y=e-t,y=e-2t,y=e-3t'); subplot(2,2,3); t3=[0 1 1 2 2 3 4]; y3=[0 0 2 2 0 0 0]; plot(t3,y3);

axis([0 4 -0.5 3]); title('脉冲信号'); subplot(2,2,4); t4=0:0.1:2*pi;

plot(sin(t4),cos(t4)); axis([-1.2 1.2 -1.2 1.2]); axis equal; title('圆');

练习:○1修改左上角图横坐标的刻度为“0 π/2 2”;

2将右上角三条曲线用不同的线型表示,给图形加坐标框; ○

3给左下角图形添加网格并添加文字“脉冲曲线”在曲线旁; ○

4修改右下角图形坐标轴的显示比例。 (2)绘制三维图形

将x 、y 和z 构成三维曲线,其中)cos 1sin(11122

ξξξξa x e y x +---

=-。阻尼

系数ξ分别为0,0.3,0.5,0.707。并进行色图显示和控制。(x ,z 如程序所示)。

x=0:0.1:20; zeta=0;

y1=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); zeta=0.3;

y2=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); zeta=0.5;

y3=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); zeta=0.707;

y4=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); y=[y1;y2;y3;y4];

z=[ones(size(x))*0;ones(size(x))*0.3;ones(size(x))*0.5;ones(size(x))*0.707]; figure(1); plot3(x,z,y); figure(2); surf(x,z,y);

三维线图三维曲面图色图的显示和控制

colormap;

colormap pink; %粉红色线性浓淡色

colorbar; %显示颜色标尺

(3)特殊图形

绘制条形图、实心图、阶梯图和火柴杆图。

x=0:0.3:2*pi;

y=sin(x);

subplot(2,2,1);

bar(x,y,0.5);

axis([0,2*pi,-1.2,1.2]);

subplot(2,2,2)

fill(x,y,'r');

subplot(2,2,3);

stairs(x,y);

subplot(2,2,4);

stem(x,y);

练习:

使用area 和scatter 命令,绘制面积图和点图。

三、习题

1、编程计算函数)4sin(1110

)(22

t e z t f t --=的值,其中t 的范围从0到2π步长取

0.1π;z 为0.707;)(1t f 为0)(≥t f 的部分,编程计算)(1t f 的值。

2、在同一图形窗口分别绘制t e t y t t y t t y 4321)(),2cos()(),2sin()(-===ππ 3条函数曲线,t 的范围为[0,2]。给坐标轴加上标柱、给整个图形加上标题、在图形窗口添加文本字符串、对各曲线分别加以文字说明,其运行结果如下图所示。

实验二 MATLAB 程序设计

一、目的和要求

1.熟练掌握MATLAB 的程序流程控制结构 2.掌握M 文件的结构

3.熟练掌握函数调用和参数传递 4.掌握利用函数句柄进行数值分析

二、内容和步骤

MATLAB 的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB 也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。 1、使用程序流程控制

(1) Fibonacci 数列的各元素满足以下关系:F1=1,F2=1,Fn=Fn-1+Fn-2,用M 函数文件实现,数列的元素个数为输入变量。 function f=shiyan211(n) f(1)=1;f(2)=1; i=2;

while i<=n

f(i+1)=f(i-1)+f(i); i=i+1; end

在命令窗口调用命令f=shiyan211(10),并记录。

练习:用for 循环编程实现上述功能,并且当某个元素大于50时,退出循环结构。

(2)使用函数调用

计算arcsinx ,)

12()!(2)!2(54163134arcsin 1

22

222+++????+?+≈+n x n n x x x x n n

,其中|x|<1。 x 为输入参数,当x 不满足条件时就不计算,并显示提示;当1

2+n x 前的系数<0.00001时,

循环结束。

编程如下:

○1子函数factorial 计算n !。 function f=factorial(n) f=1;

for m=1:n f=m*f; end

2子函数cal 。计算系数。 function k=cal(n1) for m=1:n1

k=factorial(2*n1)/(2^(2*n1)*(factorial(n1))^2*(2*n1+1)); end

○3主函数shiyan212(x )。 function y=shiyan212(x) n=1;

if abs(x)<1 y=x;

while cal(n)>0.00001

y=y+cal(n)*x^(2*n+1); n=n+1; end else

disp('输入出错') y=0; return end

在命令窗口调用函数y=shiyan212(0.5),记录结果。

(3)利用泛函命令实现数值分析 已知5.0,1.0|,|)(sin )(2

==-=-b a t b e

t t f at

,利用泛函命令求其过零点和极小值。

1创建函数shiyan213实现上述表达式关系。 function y=shiyan213(t)

a=0.1; b=0.5;

y=(sin(t)).^2.*exp(a*t)-b*abs(t); ○

2查看该函数的输出波形。 x=-10:0.1:10;

plot(x,shiyan213(x)) set(gca,'ygrid','on')

3利用函数名求过零点。 x1=fzero('shiyan213',0.5) x2=fzero('shiyan213',-0.5) 记录过零点。

4利用函数句柄求极小值,由图可知,极小值有多个,查找其中2个。 x1=fminbnd(@shiyan213,0.1,0.7) x2=fminbnd(@shiyan213,2,5) 记录结果。

练习:○

1利用函数句柄求[-1,1]的面积。 ○2使用内联函数实现下述功能:(画实验(3)的曲线图,求过零点,求8附近的极小值)

(4) 使用各种方法分析系统

已知系统的传递函数为2

22

2)

1()(n

n s n w s w s T w s G +++=ξ ○

1 当1,0,1,4.0,2.0===n w T ξ时在同一窗口绘制脉冲响应曲线。 程序如下,分析并记录结果。 wn=1;t=0;

for zeta=[0.2 0.4 1]

G=tf(wn^2,[1 2*zeta*wn,wn^2]) impulse(G) hold on end

○2 当14.02,1,5.0,0===n w ,,T ξ时,在同一窗口绘制阶跃响应曲线。绘制零极点图形。

程序如下:分析图形,并记录零点和极点。 wn=1;zeta=0.4; figure(1)

for T=[0.5 1 2]

G1=tf(wn^2,[1 2*zeta*wn,wn^2]); G2=tf([T 1],1); G=G1*G2 step(G) hold on end

figure(2) pzmap(G) pole(G) tzero(G)

○3 当17.02,1,5.0,0===n w ,,T ξ绘制多条bode 图,并计算T=2时的幅值裕度和相角裕度。

程序如下:(分析程序,记录结果并分析) wn=1;zeta=0.7; w=logspace(-1,2); for T=[0 0.5 1 2]

G1=tf(wn^2,[1 2*zeta*wn,wn^2]); G2=tf([T 1],1); G=G1*G2; bode(G) hold on end

[Gm,Pm,Wcg,Wcp]=margin(G)

4 当17.02,5.0===n w ,,T ξ时,绘制nyquist 曲线 程序如下:(分析程序,记录结果并分析) wn=1;zeta=0.7;

w=logspace(-1,2); n=1;

for T=[0.5 2]

G1=tf(wn^2,[1 2*zeta*wn,wn^2]); G2=tf([T 1],1); G(n)=G1*G2; n=n+1; end

nyquist(G(1),G(2))

5 当 14.02===n w ,,T ξ时,绘制根轨迹。然后增加一个极点p=-5,零点z=-2,

绘制根轨迹。

程序如下:(分析程序,并记录结果) figure(1)

wn=1;zeta=0.4;T=2; w=logspace(-1,2);

G1=tf(wn^2,[1 2*zeta*wn,wn^2]); G2=tf([T 1],1); G=G1*G2; rlocus(G) figure(2)

GG1=G*tf(1,[1 5]) GG2=GG1*tf([1 2],1) rlocus(GG2)

○6 当14.00===n w ,,T ξ时,将连续系统转换成离散系统,绘制离散系统的脉冲响应和频域特性曲线。

程序如下:分析程序,记录采样周期为0.5的离散系统传递函数,并改变采样周期为0.2,记录相应的离散系统传递函数。记录三副图形并分析。

figure(1)

wn=1;zeta=0.4;T=0;

G1=tf(wn^2,[1 2*zeta*wn,wn^2]); G2=tf([T 1],1); G=G1*G2; Gd=c2d(G,0.5)

[dnum,dden]=tfdata(Gd); dimpulse(dnum,dden,15) figure(2)

dnyquist(dnum,dden,0.2) figure(3)

dbode(dnum,dden,0.2) 练习:

将离散bode 图和连续bode 图比较,看有什么区别。 2、程序设计部分

(1)编写M 函数文件,将某班学生某门课的成绩为:60,75,85,96,52,36,86,56,94,84,77,用switch 结构统计各分段的人数,并将各人的成绩变为优、良、中、及格和不及格表示,统计人数和成绩变换都用子函数实现。

(2)编写M 函数文件,实现分段绘制曲面,绘制每个曲线为一个子函数

???

?

???-≥+≤+<->+=+-------1

5457.0117575.015457.0),(5.175.375.065.175.375.022222

2y x e y x e y x e y x z x x y x

y x x y (3)利用泛函命令求|))sin(sin(|)(x e x y x --=在x=0附近的极小值。 (4)已知传递函数s

s s s k

685234+++,求开环零-极点,并画出根轨迹,计算当k=5

时各极点的值。

实验三 MATLAB 仿真环境

一、目的和要求

1. 熟悉Simulink 的模型窗口 2. 掌握Simulink 模型的创建

3. 掌握连续系统和离散系统的模型分析 4. 掌握子系统和封装

二、内容和步骤

MATLAB 的Simulink 工具箱提供了对系统模型框图的建立和仿真环境,可以对连续和离散系统进行仿真分析。

1、 使用Simulink 模型窗口创建模型 使用阶跃信号为输入信号,经过传递函数为1

5.01

s 的一阶系统,查看其输出波形在

示波器上的显示。

(1) 创建模块

1 在MATLAB 的命令窗口运行simulink 命令,打开simulink 模块库浏览器窗口。 ○

2 选择菜单File —New —Model ,新建一个空白模型窗口。 ○

3 打开“Source ”模块库,选择“Step ”模块,打开“Continuous ”模块库,选择“Transfer Fcn ”模块,打开“Skins ”模块库,选择“Scope ”模块。并将这些模块拖到新建的空白模型窗口中。

(2)添加信号线。将“Step ”模块的输出端与“Transfer Fcn ”模块的输入端连接,“Transfer Fcn ”模块的输出端和“Scope ”模块的输入端连接。 (3)设置模块和信号线参数。

○1 调整模块大小。选定模块,当模块四角出现小黑块编辑框时用鼠标拖动调整编辑框大小。

2 设置信号线注释。双击信号线下面需要注释的地方,出现空白的虚线编辑框,在编辑框中输入注释。分别输入信号注释为“u(t)”和“y(t)”。

○3 为模块添加阴影。鼠标右击模块,选择“Format ”—“Show drop shadow ”。如图3.1所示。

图3.1 一阶系统模型

4 设置模块参数。双击“Step ”模块,出现参数对话框,将“Step time ”设置为0;双击“Transfer Fcn ”模块,将“Denominator ”设置为[0.

5 1]。 (4)仿真。

○1 开始仿真,选择菜单“Simulink ”—“Start ”,仿真开始。双击“Scope ”模块出现示波器显示屏,可以看到黄色的阶跃响应波形。

2 在示波器窗口单击工具栏的“Autoscale ”图标,则使纵坐标自动为上下限。 ○

3 在模型窗口选择菜单“Simulation ”—“Simulation parameters …”,则会打开参数设置对话框,修改“Stop time ”为6.0。 练习:

○1 修改仿真参数“Max step size ”为2,“Min step size ”为1,在示波器查看波形。 ○

2 修改示波器Y 坐标范围为0~2,横坐标范围为0~15,查看波形。 (5)封装子系统传递函数为

1

1

Ts ,从对话框输入T 。 ○

1 将“Transfer Fcn ”模块的 “Denominator ”设置为[T 1]。 ○

2 将“Transfer Fcn ”模块选定,然后选择菜单“Edit ”—“Create subsystem ”,建立子系统。

○3 选择菜单“Edit ”—“Mask subsystem ”,出现封装对话框,在Icon 选项卡中的“Drawing commands ”栏设置“disp (‘一阶系统’)”;在“Parameters ”选项卡中,单击“Add ”按纽,设置“type ”栏为“edit ”,设置“Prompt ”为“时间常数”,对应的“Variable ”为“T ”;在“Documentation ”选项卡中设置“Mask type ”为“My System ”。当双击“Subsystem ”模块时,出现“封装子系统参数输入”对话框。可输入不同的参数T=0.1,0.3,0.5,查看示波器显示波形。 练习:

1 在Icon 选项卡给封装子系统的封面添加传递函数和曲线。

2 在Initialization 选项卡中给T 设置初始值为1。 ○

3 在Documentation 选项卡中添加说明和帮助文本。 ○

4 输入T=2时,修改仿真的“Stop time ”参数来查看完整的波形。

2、使用Simulink 模型窗口创建状态方程模型

已知系统状态方程为?????=--=1

2.2

2

211.)1(y y y y y y ,其中25.0)0(,25.0)0(21==y y 。

(1)使用示波器观察

21,y y 。将方程转换成模块连接:方程1.

2y y =,则1y 的积

分为2y ;方程22

211.

)1(y y y y --=,则将2

2y 与常数1进行加法运算,再与1y 相乘,与2y 加法运算,再将结果积分得出1y 。

○1 模块选择。打开“Continuous ”模块库,选择2个“Integrator ”模块;打开“Sources ”模块库选择“Constant ”模块;打开“Math Operations ”模块库,选择2个“Sum ”模块;打开“Math Operations ”模块库,选择2个“Product ”模块进行乘法运算;打开“Sinks ”模块库,选择2个“Scope ”模块。

2 连接信号线,并在信号线上方添加注释。如图3.2所示。

图3.2 模型框图

3 设置模块参数。需要设置积分模块的初始值,25.0)0(,25.0)0(21==y y 。分别双击两个积分模块,出现“积分模块参数设置对话框”,在“Initial condition ”栏输入0.25;2个“Sum ”模块的“List of signs ”都设置为“| + -”。

○4 开始仿真。双击示波器,查看输出波形。并记录。 练习:

调整仿真参数,将仿真时间设置为0~20,将Scope 的时间设置为0~15,将Scope1的时间设置为0~25,查看输出波形。

(2)使用XY Graph 观察21,y y 构成的相轨迹。

1 添加模块。打开“Sinks ”模块库,选择“XY Graph ”模块,将21,y y 信号用信号线连接到“XY Graph ”模块的2个输入端。

○2 设置“XY Graph ”模块的参数。“x-min ”为-3,“x-max ”为3,“y-min ”为-4,“y-max ”为4,“Sample time ”为-1。

○3 开始仿真。观看“XY Graph ”模块波形图。

3、触发子系统

将方波信号用触发子系统改变脉冲宽度,输入方波信号,用触发子系统将其脉冲宽度改变。

○1 模块选择。打开“Sources ”模块库选择2个“Pulse Generator ”模块;打开“Subsystems ”模块库,选择 “Triggered Subsystem ”模块;打开“Sinks ”模块库,选择 “Scope ”模块。

2 连接信号线,将一个“Pulse Generator ”模块作为“Triggered Subsystem ”模块的输入信号,另一个“Pulse Generator ”模块作为控制信号。

3 设置模块参数。将“Scope ”模块的参数“Number of axes ”设置为3,则示波器的输入端口为3个,将输入方波和控制方波以及输出信号分别接在示波器的3个端口上;设置控制信号“Pulse Generator1”模块的参数,将“Period ”设置为0.8,“Phrase delay ”设置为0.5。

○4 开始仿真。双击示波器,可以看到3个波形在示波器的显示,输出的方波脉冲宽度发生了变化。

练习:通过调整控制信号的“Pulse Generator ”模块参数,查看不同的方波延时和脉宽变化。

5 改变“Triggered Subsystem ”模块的触发方式,在“触发器参数设置”对话框中,将默认的上升沿触发改为下降沿触发,查看波形。

三、习题

1、二阶系统的微分方程为,0),(2.04.02.0''''===++x x t u x x x )(t u 为单位阶跃信号,使用Simulink 创建模型。

2、封装一个子系统,系统方程为:cx

e bx a y -=)sin(,其中x 为输入,y 为输出,

通过对话框输入a ,b ,c 的值。

实验四 MATLAB高级应用

一、目的和要求

1.掌握MEX和EXE文件的创建

2.掌握低级文件的输入、输出

3.了解Notebook的使用

二、内容和步骤

1、MATLAB应用接口

MATLAB具有多种接口功能,有外部数据接口和应用程序接口,用户可以十分方便地与其他应用程序交换数据和信息。比如,MATLAB可以与C和FORTRAN程序相互调用,从而充分发挥MATLAB数值计算的长处,避开其运行速度慢的短处。

(1)C语言MEX文件的构成

C语言MEX文件的文件头使用“include”命令包含了“mex.h”文件,程序的构成主要由入口子程序和计算功能子程序两部分组成,每部分完成不同的任务。

入口子程序:是在MATLAB系统与被调用的外部子程序之间建立通信联系,分别定义了被MATLAB调用的外部子程序的入口地址、MATLAB系统向子程序传递的子程序参数、子程序向MATLAB系统返回的结果参数,以及调用计算功能子程序等。入口子程序必须是mexFunction。

计算功能子程序。包含所有的实际需要完成的功能源代码,可以是用户以前所编写的算法和程序,以函数的形式存在。

在Microsoft Visual C++6.0环境下创建一个MEX文件,实现计算一个数平方的倒数值。

○1在Microsoft Visual C++6.0环境下创建一个“C++ Source File”文件,文件名为“shiyan411.cpp”。

○2编写该文件的程序代码如下:

#include "mex.h"

#include "math.h"

/*计算功能子程序*/

void shiyan411(double y[],double x[])

{

y[0]=1/(x[0]*x[0]);

return;

}

/*入口子程序*/

void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])

{

double *x,*y;

unsigned int m,n;

/*检查输入变量的个数是否正确*/

if(nrhs!=1)

{

mexErrMsgTxt("Only one input argument allowed.");

}

/*检查输出变量的个数是否正确*/

else if(nlhs!=1)

{

mexErrMsgTxt("Only one output argument allowed.");

}

m=mxGetM(prhs[0]);

n=mxGetN(prhs[0]);

/*检查输入变量必须是非复数单个双精度数*/

if(!mxIsDouble(prhs[0])||mxIsSparse[0])||mxIsComplex(prhs[0])||!(m==1&&n==1))

{

mexErrMsgTxt("Input argument must be a scalar.");

}

/*创建矩阵变量为输出变量*/

plhs[0]=mxCreateDoubleMatrix(m,n,mxREAL);

y=mxGetPr(plhs[0]);

x=mxGetPr(prhs[0]);

/*调用计算功能子程序*/

shiyan411(y,x);

}

○3在MATLAB命令窗口的当前目录浏览器中将当前目录设置为用户的目录,输入命令创建MEX文件并运行,记录结果。

mex shiyan411.cpp

y=shiyan411(2)

○4为该文件添加帮助M文件。为了在MATLAB中可以方便的查看shiyan411.dll文件的帮助信息,可以建立一个shiyan411.m文件,并输入以下内容:

% function y=shiyan411(x)

% 计算一个数平方的倒数值

% y=1/(x^2)

% copyright @ 2006-8-10

请在MATLAB命令窗口中,用help命令通过M文件来查看帮助信息。

(2)使用MATLAB编译器生成MEX和EXE文件

MATLAB编译器可以将MATLAB语言编写的M文件自动转换成C/C++源代码文件,这些C/C++源代码文件可以编译生成可执行文件或动态链接库,是程序的执行效率大大高于M文件。

在MATLAB环境中创建一个M函数文件,用来绘制正弦信号波形。

○1创建M函数文件

function shiyan412

x=0:0.1:2*pi;

y=sin(x)

plot(x,y)

○2保存文件,在MATLAB命令窗口中由该M文件创建MEX文件并运行,请记录结果。mcc -x shiyan412

shiyan412

○3用mcc命令把上述M文件编译生成EXE文件

mcc –B sglcpp shiyan412.m %创建需要图形库的C++独立应用程序

2、低级文件的输入、输出

(1)打开、关闭文件、读写格式化数据、读写二进制数据

○1打开、关闭文本文件“shiyan42.txt”,“shiyan42.txt”在MATLAB环境中显示的文件内容如下:

a 1 2 3

b 4 5 6

程序如下:(分析程序,记录结果)

[fid,message]=fopen('shiyan42.txt','w+')

if fid==-1

disp('无法打开该文件')

else

disp('成功打开该文件')

end

status=fclose(fid)

○2读取该文件的前4个字符,在该文件末尾添加数据a='% This is a example.' 并读取整个文件内容。

程序如下:(分析程序,并记录结果)

fid=fopen('shiyan42.txt')

fscanf(fid,'%s',4)

fclose(fid)

a='% This is a example.';

fid=fopen('shiyan42.txt','a+')

fprintf(fid,'%s',a)

fclose(fid)

fid=fopen('shiyan42.txt','r')

fscanf(fid,'%s')

fclose(fid)

○3以行的形式读取“shiyan42.txt ”文件。

程序如下:(分析程序,并记录结果)

fid=fopen('shiyan42.txt','r')

fgetl(fid)

fgets(fid)

fgets(fid,10)

fgets(fid,10)

○4写入数据到MAT文件中,并读取数据。

程序如下:(分析程序,并记录结果)

x1=1:10;

[fid,message]=fopen('shiyan42.mat','a')

count1=fwrite(fid,x1)

x2=11:15;

count2=fwrite(fid,x2)

status=fclose(fid)

fid=fopen('shiyan42.mat','r');

a1=fread(fid,[2,5])

a2=fread(fid,[1,5])

a3=fread(fid,[3,5])

fclose(fid)

分析思考:为什么a3的数据这样排列?

a3 =

1 4 7 10 13

2 5 8 11 14

3 6 9 12 15

(2)文件定位

创建两个mat文件,在“shiyan421.mat”文件中写入1-10的数据,并进行求和,在“shiyan422.mat”文件中写入1,2,3这3个数据,将第2个数据与前面所求的和进行相乘运算。

程序如下:(分析程序,并记录结果)

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实验报告

实验一 典型环节得M AT LAB 仿真 一、实验目得 1.熟悉M ATLAB 桌面与命令窗口,初步了解SIM ULINK 功能模块得使用方法、 2.通过观察典型环节在单位阶跃信号作用下得动态特性,加深对各典型环节响应曲线得理解。 3、定性了解各参数变化对典型环节动态特性得影响、 二、实验原理 1、比例环节得传递函数为 其对应得模拟电路及SIMULI NK 图形如图1所示。 2.惯性环节得传递函数为 uf C K R K R s C R R R Z Z s G 1,200,10012.021)(121121212===+-=+-=-= 其对应得模拟电路及S IMULINK 图形如图2所示。 3.积分环节(I)得传递函数为 其对应得模拟电路及SI MULINK 图形如图3所示。 4.微分环节(D)得传递函数为 其对应得模拟电路及SIMULINK 图形如图4所示、 ? 5.比例+微分环节(PD)得传递函数为 其对应得模拟电路及SIMUL INK 图形如图5所示。 6.比例+积分环节(PI)得传递函数为 其对应得模拟电路及SIMU LI NK 图形如图6所示。 图1 比例环节得模拟电路及SIMULINK 图形 图3 积分环节得模拟电路及及SIMULINK 图形 图4 微分环节得模拟电路及及SIMULINK 图形 图2惯性环节得模拟电路及SIMULINK 图形 图5比例+微分环节得模拟电路及SIMULINK 图形曲线

三、实验内容 按下列各典型环节得传递函数,建立相应得SIMULINK仿真模型,观察并记录其单位阶跃响应波形。 ①比例环节与; ②惯性环节与 ③积分环节 ④微分环节 ⑤比例+微分环节(PD)与 ⑥比例+积分环节(PI)与 四、实验报告 记录各环节得单位阶跃响应波形,并分析参数对响应曲线得影响。 ①比例环节: (如图7所示)(如图8所示) ②惯性环节: (如图9所示) (如图10所示) ③积分环节: (如图11所示) ④微分环节:(如图12所示) ⑤比例+微分环节(PD): (如图13所示) (如图14所示) ⑥比例+积分环节(PI): (如图15所示) (如图16所示)

Matlab数学实验报告一

数学软件课程设计 题目非线性方程求解 班级数学081 姓名曹曼伦

实验目的:用二分法与Newton迭代法求解非线性方程的根; 用Matlab函数solve、fzero、fsolve求解非线性方程(组)的解。 编程实现二分法及Newton迭代法; 学会使用Matlab函数solve、fzero、fsolve求解非线性方程(组)的解。 通过实例分别用二分法及迭代法解非线性方程组并观察收敛速度。 实验内容: 比较求exp(x)+10*x-2的根的计算量。(要求误差不超过十的五次方) (1)在区间(0,1)内用二分法; (2)用迭代法x=(2-exp(x))/10,取初值x=0 。 试验程序 (1)二分法: format long syms x s=exp(x)+10*x-2 a=0; b=1; A=subs(s,a) B=subs(s,b) f=A*B %若f<0,则为由根区间 n=0; stop=1.0e-5; while f<0&abs(a-b)>=stop&n<=100; Xk=(a+b)/2; %二分 M= subs(s, Xk); if M* A<0 symbol=1 %若M= subs(s, Xk)为正,则与a二分 b= Xk else symbol=0 % 若M= subs(s, Xk)为负,则与b二分 a= Xk end n=n+1 end Xk n (2)牛顿迭代法; format long

syms x s= (2-exp(x))/10; %迭代公式 f=diff(s); x=0; %迭代初值 a=subs(f,x); %判断收敛性(a是否小于1) s=(2-exp(x))/10; stop=1.0e-5; %迭代的精度 n=0; while a<1&abs(s-x)>=stop&n<=100; x=s %迭代 s=(2-exp(x))/10; n=n+1 end 实验结果: (1)二分法: symbol =1 b =0.50000000000000 n =1 symbol =1 b =0.25000000000000 n =2 symbol =1 b =0.12500000000000 n =3 symbol =0 a =0.06250000000000 n =4 symbol =1 b =0.09375000000000 n =5 symbol =0 a =0.07812500000000 n =6 symbol =1 b =0.09054565429688 n =15 symbol =1 b =0.09053039550781 n =16 symbol =0 a =0.09052276611328 n =17 Xk =0.09052276611328 n =17 (2)迭代法 由x =0.10000000000000 n =1 x =0.08948290819244 n =2 x =0.09063913585958 n =3 x =0.09051261667437 n =4 x =0.09052646805264 n =5 试验结果可见用二分法需要算17次,而用迭代法求得同样精度的解仅用5次,但由于迭代法一般只具有局部收敛性,因此通常不用二分法来求得非线性方程的精确解,而只用它求得根的一个近似解,再用收敛速度较快的迭代法求得其精确解。

《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上机实验

Matlab 上机实验 一、 实验目的 1、 掌握绘制MATLAB 二维、三维和特殊图形的常用函数; 2、 熟悉并掌握图像输入、输出及其常用处理的函数。 二、 实验内容 1 绘制函数的网格图和等高线图。42 2cos cos y x ye x z +-= 其中x 的21个值均匀分布在[-5,5]范围,y 的31个值均匀分布在[0,10],要求将产生的网格图和等高线图画在同一个图形窗口上。 2 绘制三维曲面图,使用纯铜色调色图阵进行着色,并进行插值着色 处理。?????===s z t s y t s x sin sin cos cos cos 230,20ππ≤≤≤≤t s 3 已知 ???????>++≤+=0),1ln(210,22x x x x e x y π 在-5<=x<=5区间绘制函数曲线。 4 已知y1=x2,y2=cos(2x),y3=y1*y2,其中x 为取值-2π~2π的等差数列(每次增加0.02π),完成下列操作: a) 在同一坐标系下用不同的颜色和线型绘制三条曲线,给三条曲线添加图例; b) 以子图形式,分别用条形图、阶梯图、杆图绘制三条曲线,并分别给三个图形添加标题“y1=x^2”,“y2=cos(2x)”和“y3=

y1*y2”。 5 在xy 平面内选择区域[][],,-?-8888 ,绘制函数 z =的三 种三维曲面图。 6 在[0,4pi]画sin(x),cos(x)(在同一个图象中); 其中cos(x)图象用红色小圆圈画.并在函数图上标注 “y=sin(x)”, “y=cos(x)” ,x 轴,y 轴,标题为“正弦余弦函数图象”. 7 分别用线框图和曲面图表现函数z=cos(x)sin(y)/y ,其中x 的取值为 [-1.5pi,1.5pi],y=x ,要求:要有标题、坐标轴标签 8 有一组测量数据满足-at e =y ,t 的变化范围为0~10,用不同的线型和标记点画出a=0.1、a=0.2和a=0.5三种情况下的曲线,并加入标题和图列框(用代码形式生成) 9 2 2y x xe z --=,当x 和y 的取值范围均为-2到2时,用建立子窗口 的方法在同一个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图 10 x= [66 49 71 56 38],绘制饼图,并将第五个切块分离出来。 11 用sphere 函数产生球表面坐标,绘制不通明网线图、透明网线图、表面图和带剪孔的表面图。 12 以自己的个人画像或照片(JPG)为对象,读入该图像并了解图像的信息,同时利用所学函数对其进行灰度、二值、旋转及缩放等处理,并以PNG 形式输出。

自动控制matlab实验

《自动控制原理与系统》 实验报告 院系:材料科学与工程学院 班级: 1204022 姓名:朱子剑 学号: 120402227 时间: 2014 年 12 月

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

已知系统的传递函数 2 32 21 () 6116 s s G s s s s ++ = +++, 1)绘制系统的零、极点图 2)求系统的极点 3)试问该系统的稳定性 num=[1 2 1];den=[1 6 11 6];G=tf(num,den); pzmap(G); p=roots(den) p = -3.0000 -2.0000 -1.0000 1)系统的零极点图 2)系统的极点 S1= -3.0000;s2=-2.0000;s3=-1.0000 3)由计算结果可知,该系统所有的极点均无正实部,故系统稳定。(二)阶跃响应 二阶系统 1)绘制系统的单位阶跃响应曲线

MATLAB数学实验第二版答案(胡良剑)

数学实验答案 Chapter 1 Page20,ex1 (5) 等于[exp(1),exp(2);exp(3),exp(4)] (7) 3=1*3, 8=2*4 (8) a为各列最小值,b为最小值所在的行号 (10) 1>=4,false, 2>=3,false, 3>=2, ture, 4>=1,ture (11) 答案表明:编址第2元素满足不等式(30>=20)和编址第4元素满足不等式(40>=10) (12) 答案表明:编址第2行第1列元素满足不等式(30>=20)和编址第2行第2列元素满足不等式(40>=10) Page20, ex2 (1)a, b, c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a与c相等,但他们不等于b (2)double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码 Page20,ex3 >> r=2;p=0.5;n=12; >> T=log(r)/n/log(1+0.01*p) Page20,ex4 >> x=-2:0.05:2;f=x.^4-2.^x; >> [fmin,min_index]=min(f) 最小值最小值点编址 >> x(min_index) ans = 0.6500 最小值点 >> [f1,x1_index]=min(abs(f)) 求近似根--绝对值最小的点 f1 = 0.0328 x1_index = 24 >> x(x1_index) ans = -0.8500 >> x(x1_index)=[];f=x.^4-2.^x; 删去绝对值最小的点以求函数绝对值次小的点 >> [f2,x2_index]=min(abs(f)) 求另一近似根--函数绝对值次小的点 f2 = 0.0630 x2_index = 65 >> x(x2_index) ans = 1.2500

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应用基础实验指导书

第一章 MATLAB及其工作环境介绍 (1) 1.1 MATLAB简介 (1) 1.2 MATLAB的工作环境介绍 (1) 1.3 MATLAB的基本管理命令 (4) 第二章 MATLAB的数值计算功能 (5) 2.1 变量与赋值语句 (5) 2.2 MATLAB矩阵 (5) 2.3 MATLAB表达式 (10) 2.4 MATLAB常用数学函数 (11) 2.5 矩阵的基本运算 (12) 2.6 数组运算 (16) 2.7 多项式及其运算 (17) 第三章 MATLAB程序设计入门 (19) 3.1 M文件 (19) 3.2 数据的输入输出 (21) 3.3 全局变量和局部变量 (23) 3.4 程序流程控制 (23) 第四章 MATLAB的符号运算功能 (28) 4.1 建立符号对象 (28) 4.2 符号算术运算 (29) 4.3 符号微积分运算 (32) 4.4 符号函数的可视化 (34) 第五章 MATLAB的可视化功能 (37) 5.1 二维图形 (37) 5.2绘制三维图形 (42) 5.3 特殊坐标图形 (44) 5.4 图形句柄 (45)

第一章 MATLAB及其工作环境介绍 1.1 MATLAB简介 MATLAB是matrix和laboratory前三个字母的缩写,意思是实验室矩阵。MATLAB 语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国MathWorks公司推向市场以来,经过十多年的发展与完善,MATLAB已发展成为由MATLAB语言、MATLAB工作环境、MATLAB图象处理系统、MATLAB数学函数库和MATLAB 应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的体系。MATLAB由“主包”和三十多个扩展功能和应用学科性的工具箱组成。 MATLAB具有以下基本功能: ●数值计算功能 ●符号计算功能 ●图形处理及可视化功能 ●可视化建模及动态仿真功能 MATLAB语言是以矩阵计算为基础的程序设计语言,语法规则简单易学。其指令格式与数学表达式非常相近,用MATLAB编写程序犹如在便笺上列写公式和求解,因而被称为“便笺式”的编程语言。另外,MATLAB还具有功能丰富和完备的数学函数库及工具箱,大量繁杂的数学运算和分析可通过调用MATLAB函数直接求解,大大提高效率,其程序编译和执行速度远远超过了传统的C和FORTRAN语言,因而用MATLAB 编写程序,往往可以达到事半功倍的效果。在图形处理方面,MATLAB可以给数据以二维、三维乃至四维的直观表现,并在图形色彩、视角、品性等方面具有较强的渲染和控制能力,使技术人员对大量原始数据的分析变得轻松和得心应手。 MATLAB的上述特点,使它深受工程技术人员及科技专家的欢迎,并成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。目前MATLAB已成为国际上公认的最优秀的科技应用软件。 1.2 MATLAB的工作环境介绍 一、MATLAB的工作环境

自动控制实验--matlab

实验报告 课程名称:自动控制原理 实验名称:基于MATLAB的线性系统的时域分析 院(系):电子科学与工程学院专业:电子科学与技术姓名:学号: 同组人员:实验时间:2013.11.15 评定成绩:审阅教师:

一、实验目的 1.观察学习控制系统的时域(阶跃、脉冲、斜坡)响应。 2.记录时域响应曲线,给出时域指标。 3.掌握时域响应分析的一般方法。 二、实验容 1、 二阶系统为10/( );计算系统的闭环根、阻尼比、无阻尼振荡频率并做记 录。计算实际测取的峰值大小Cmax (tp )、峰值时间tp 、过渡时间ts 并与理论值比较。 2、 试作出以下系统的阶跃响应,并比较与原系统响应曲线的差别与特点,做出相应的实验 分析结果。 (a ) H1(s )=(2s+1)/(2 210s s ++),有系统零点情况。 (b ) H2(s )=(20.5s +)/2 (210)s s ++,分子、分母多项式阶数相等。 (c ) H3(s )=s/2 (210)s s ++,分子多项式零次项系数为零。 3、 已知单位反馈开环系统传递函数 输入分别为r(t)=2t 和时,系统的响应曲线,分析稳态值与系统输入函 数的关系 三、实验原理分析和代码 实验1 实验要求计算系统的闭环根、阻尼比、无阻尼振荡频率。系统的闭环根利用Matlab 的解方程命令即可求出,根据阻尼比和无阻尼振荡频率的定义,对照表达式,就可以得到,也能利用Matlab 相应命令得到。 实际测取的峰值大小、峰值时间、过渡时间可以分别由Matlab 相关命令得到。理论的 峰值大小、峰值时间和过渡时间由课本上给出的公式 Cmax (tp )=1+π ξξ 2 1-- e , 21ζ ωπ ωπ-= = n d p t ,±2%误差宽度时的过渡时间n s t ζω4=分别计算出来。 Matlab 代码如下: 2 22)(t t t r ++=)5)(S 1S 1.0(100)(++=S G )5)(S 1S 1.0(50 )(++= S S G )1006()12(10)(2 2+++=S S S S S G

MATLAB实验报告

实验一 MATLAB 环境的熟悉与基本运算 一、实验目的及要求 1.熟悉MATLAB 的开发环境; 2.掌握MATLAB 的一些常用命令; 3.掌握矩阵、变量、表达式的输入方法及各种基本运算。 二、实验内容 1.熟悉MATLAB 的开发环境: ① MATLAB 的各种窗口: 命令窗口、命令历史窗口、工作空间窗口、当前路径窗口。 ②路径的设置: 建立自己的文件夹,加入到MATLAB 路径中,并保存。 设置当前路径,以方便文件管理。 2.学习使用clc 、clear ,了解其功能和作用。 3.矩阵运算: 已知:A=[1 2;3 4]; B=[5 5;7 8]; 求:A*B 、A.*B ,并比较结果。 4.使用冒号选出指定元素: 已知:A=[1 2 3;4 5 6;7 8 9]; 求:A 中第3列前2个元素;A 中所有列第2,3行的元素; 5.在MATLAB 的命令窗口计算: 1) )2sin(π 2) 5.4)4.05589(÷?+ 6.关系及逻辑运算 1)已知:a=[5:1:15]; b=[1 2 8 8 7 10 12 11 13 14 15],求: y=a==b ,并分析结果 2)已知:X=[0 1;1 0]; Y=[0 0;1 0],求: x&y+x>y ,并分析结果 7.文件操作 1)将0到1000的所有整数,写入到D 盘下的文件 2)读入D 盘下的文件,并赋给变量num

8.符号运算 1)对表达式f=x 3 -1 进行因式分解 2)对表达式f=(2x 2*(x+3)-10)*t ,分别将自变量x 和t 的同类项合并 3)求 3(1)x dz z +? 三、实验报告要求 完成实验内容的3、4、5、6、7、8,写出相应的程序、结果

matlab实验报告

MATLAB 数学实验报告 指导老师: 班级: 小组成员: 时间:201_/_/_

Matlab 第二次实验报告 小组成员: 1 题目:实验四,MATLAB 选择结构与应用实验 目的:掌握if 选择结构与程序流程控制,重点掌握break,return , pause语句的应用。 问题:问题1:验证“哥德巴赫猜想” ,即:任何一个正偶数(n>=6)均可表示为两个质数的和。要求编制一个函数程序,输入一个正偶数,返回两个质数的和。 问题分析:由用户输入一个大于6 的偶数,由input 语句实现。由if 判断语句判断是否输入的数据符合条件。再引用质数判断函数来找出两个质数,再向屏幕输出两个质数即可。 编程:function [z1,z2]=gede(n); n=input('please input n')

if n<6 disp('data error'); return end if mod(n,2)==0 for i=2:n/2 k=0; for j=2:sqrt(i) if mod(i,j)==0 k=k+1; end end for j=2:sqrt(n-i) if mod(n-i,j)==0 k=k+1; end end if k==0 fprintf('two numbers are') fprintf('%.0f,%.0f',i,n- i) break end

end end 结果分析 如上图,用户输入了大于6的偶数返回两个质数5和31,通过 不断试验,即可验证哥德巴赫猜想。 纪录:if判断语句与for循环语句联合嵌套使用可使程序结构更加明晰,更快的解决问题。 2题目:实验四,MATLAB选择结构与应用实验 目的:用matlab联系生活实际,解决一些生活中常见的实际问 题。

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实验 第6章习题解答

第6章控制系统的校正 本章主要讨论利用频率法对单输入-单输出的线性定常系统的综合和设计。在介绍控制系统校正的基本概念、控制系统的基本控制规律的基础上,介绍了各种串联校正装置(超前校正装置、滞后校正装置、滞后-超前校正装置)的特性及按分析进行相应设计的基本步骤和方法;还介绍了期望设计法的基本概念、常见的期望特性和设计步骤;另外还介绍了根轨迹法的串联校正和反馈校正的基本概念和方法;最后介绍了利用MATLAB进行控制系统校正。 教材习题同步解析 试分别说明系统的固有频率特性与系统期望频率特性的概念。 答:系统本身固有元件所具有的频率特性称为固有频率特性。设计者希望系统所能达到的频率特性称为系统期望频率特性。 试比较串联校正和反馈校正的优缺点。 答:a、校正装置和未校正系统的前向通道环节相串联,这种叫串联校正,串联校正是最常用的设计方法,设计与实现比较简单,通常将串联装置安置在前向通道的前端。 b、并联校正也叫反馈校正,它是和前向通道的部分环节按反馈方式连接构成局部反馈回路,设计相对较为复杂。并联校正一般不需要加放大器,它可以抑制系统的参数波动及非线性因素对系统性能的影。 PD控制为什么又称为超前校正?串联PD控制器进行校正为什么能提高系统的快速性和稳定性? 答:加入PD控制相当于在系统中加入一个相位超前的串联校正装置,使之在穿越频率处有较大的相位超前角。因此,PD控制称为超前控制。PD控制的传递函数为G s Kp sτ =+,由比例控制和微分控制组合而成。增大比例系数Kp,可以展宽系统的()(1) 通频带,提高系统的快速性。微分控制反映信号的变化率的预报作用,在偏差信号变化前给出校正信号,防止系统过大地偏离期望值和出现剧烈振荡倾向,有效地增强系统的相对稳定性。 PI控制为什么又称为滞后校正?串联PI控制器进行校正为什么能提高系统的稳态性能?如何减小它对系统稳定性的影响? 答:PI控制在低频段产生较大的相位滞后,所以滞后校正。PI控制的比例部分可以提高系统的无差度,改善系统的稳态性能。在串入系统后应使其转折频率在系统幅值穿越频率

MATLAB数学实验100例题解

一元函数微分学 实验1 一元函数的图形(基础实验) 实验目的 通过图形加深对函数及其性质的认识与理解, 掌握运用函数的图形来观察和分析 函数的有关特性与变化趋势的方法,建立数形结合的思想; 掌握用Matlab 作平面曲线图性的方法与技巧. 初等函数的图形 2 作出函数x y tan =和x y cot =的图形观察其周期性和变化趋势. 解:程序代码: >> x=linspace(0,2*pi,600); t=sin(x)./(cos(x)+eps); plot(x,t);title('tan(x)');axis ([0,2*pi,-50,50]); 图象: 程序代码: >> x=linspace(0,2*pi,100); ct=cos(x)./(sin(x)+eps); plot(x,ct);title('cot(x)');axis ([0,2*pi,-50,50]); 图象: cot(x) 4在区间]1,1[-画出函数x y 1 sin =的图形. 解:程序代码: >> x=linspace(-1,1,10000); y=sin(1./x); plot(x,y); axis([-1,1,-2,2]) 图象:

二维参数方程作图 6画出参数方程???==t t t y t t t x 3cos sin )(5cos cos )(的图形: 解:程序代码: >> t=linspace(0,2*pi,100); plot(cos(t).*cos(5*t),sin(t).*cos(3*t)); 图象: 极坐标方程作图 8 作出极坐标方程为10/t e r =的对数螺线的图形. 解:程序代码: >> t=0:0.01:2*pi; r=exp(t/10); polar(log(t+eps),log(r+eps)); 图象: 90270 分段函数作图 10 作出符号函数x y sgn =的图形. 解:

河南城建学院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仿真实验实验指导书

自动控制原理MATLAB仿真实验实验指导书

2013年09月

实验一 控制系统数学模型 一、实验目的 1、 掌握控制系统数学模型——传递函数的求取方法; 2、 利用MATLAB 命令求取控制系统传递函数。 二、基础知识及MATLAB 函数 在MA TLAB 命令窗口上,以命令的方式建立系统的传递函数。在MA TLAB 下,系统的数学模型有3种描述方式,此实验用多项式模型。 (1)多项式模型: 线性定常系统的数学模型传递函数G(s)一般可以表示成: m n a s a s a s a b s b s b s b s R s C s G n n n n m m m m ≥+++++++==----,......)() ()(0 11 10111 其中分子分母多项式中的a n 与b m 均为常系数。 MATLAB 语言描述: 构造分子多项式:num=[b m ,b m-1,…,b 1,b 0];或num=[b m b m-1 … b 1 b 0] 构造分母多项式:den=[a n ,a n-1,…,a 1,a 0];或den=[a n a n-1 … a 1 a 0] 构造并显示传递函数:printsys(num,den); 其中num 与den 是习惯用法,也可用其它变量名代替,但在显示时会出现num/den ,这是通用输出显示格式,与输入变量名称无关。 例1-1: >>num=[1 12 44 48]; >>den=[1 16 86 176 105]; >>printsys(num,den) 显示: num/den = s^3 + 12 s^2 + 44 s + 48 ----------------------------------- s^4 + 16 s^3 + 86 s^2 + 176 s + 105 例1-2:系统开环传递函数为 ) 106)(2() 1(5)(22++++= s s s s s s G 写出多项式模型。 >>n=conv([5],[1 1]); >>d=conv([1 0 0],conv([1 2],[1 6 10])); >>printsys(n,d) 显示: num/den = 5 s + 5 ----------------------------- s^5 + 8 s^4 + 22 s^3 + 20 s^2 (2)模型的连接

南邮MATLAB数学实验答案(全)

第一次练习 教学要求:熟练掌握Matlab 软件的基本命令和操作,会作二维、三维几何图形,能够用Matlab 软件解决微积分、线性代数与解析几何中的计算问题。 补充命令 vpa(x,n) 显示x 的n 位有效数字,教材102页 fplot(‘f(x)’,[a,b]) 函数作图命令,画出f(x)在区间[a,b]上的图形 在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上) 1.1 计算30sin lim x mx mx x →-与3 sin lim x mx mx x →∞- syms x limit((902*x-sin(902*x))/x^3) ans = 366935404/3 limit((902*x-sin(902*x))/x^3,inf) ans = 0 1.2 cos 1000 x mx y e =,求''y syms x diff(exp(x)*cos(902*x/1000),2) ans = (46599*cos((451*x)/500)*exp(x))/250000 - (451*sin((451*x)/500)*exp(x))/250 1.3 计算 22 11 00 x y e dxdy +?? dblquad(@(x,y) exp(x.^2+y.^2),0,1,0,1) ans = 2.1394 1.4 计算4 2 2 4x dx m x +? syms x int(x^4/(902^2+4*x^2)) ans = (91733851*atan(x/451))/4 - (203401*x)/4 + x^3/12 1.5 (10)cos ,x y e mx y =求 syms x diff(exp(x)*cos(902*x),10) ans = -356485076957717053044344387763*cos(902*x)*exp(x)-3952323024277642494822005884*sin(902*x)*exp(x) 1.6 0x =的泰勒展式(最高次幂为4).

MATLAB上机实验练习题答案

数学建模 MATLAB上机实验练习题 1、给出一个系数矩阵A[234;541;132],U=[123],求出线性方程组的一个精确解。 2、给出两组数据x=[00.30.81.11.62.3]’y=[0.820.720.630.600.550.50]’,我们可以简单的 认为这组数据在一条衰减的指数函数曲线上,y=C1+C2e-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。 3、解线性方程 4、通过测量得到一组数据: 5、已知一组测量值 6、从某一个过程中通过测量得到: 分别采用多项式和指数函数进行曲线拟合。 7、将一个窗口分成四个子窗口,分别用四种方法做出多峰函数的表面图(原始数据法,临近 插值法,双线性插值法,二重三次方插值法) 8、在同一窗口使用函数作图的方法绘出正弦、余弦、双曲正弦、双曲余弦。分别使用不同的 颜色,线形和标识符。 9、下面的矩阵X表示三种产品五年内的销售额,用函数pie显示每种产品在五年内的销售额

占总销售额的比例,并分离第三种产品的切片。 X=19.322.151.6 34.270.382.4 61.482.990.8 50.554.959.1 29.436.347.0 10、对应时间矢量t,测得一组矢量y t00.30.8 1.1 1.6 2.3 y0.50.82 1.14 1.25 1.35 1.40 采用一个带有线性参数的指数函数进行拟合,y=a0+a1e-t+a2te-t,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。 11、请创建如图所示的结构数组(9分) 姓名编号指标 江明顺071023身高:176,体重:82 于越忠060134身高:168,体重:74 邓拓050839身高:182,体重:77 12、创建如图所示的元胞数组。(9分) 13、某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。要求写出达到题目要求的MATLAB 操作过程,不要求计算结果。 年份19901992199419961998200020022004200620082010 产量(万吨)75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344 14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据如下。 time=[2.55.07.510.013.017.020.030.040.050.060.070.0] res=[0.290.560.771.051.361.522.002.272.813.053.253.56]

自动控制原理 matlab实验报告

自动控制原理实验(二) 一、实验名称: 基于MATLAB的控制系统频域及根轨迹分析 二、实验目的: (1)、了解频率特性的测试原理及方法; (2)、理解如何用MATLAB对根轨迹和频率特性进行仿真和分析; (3)、掌握控制系统的根轨迹和频率特性两大分析和设计方法。 三、实验要求: (1)、观察给定传递函数的根轨迹图和频率特性曲线; (2)、分析同一传递函数形式,当K值不同时,系统闭环极点和单位阶跃响应的变化情况;(3)、K值的大小对系统的稳定性和稳态误差的影响; (4)、分析增加系统开环零点或极点对系统的根轨迹和性能的影响。 四、实验内容及步骤 (1)、实验指导书:实验四 (1)、“rlocus”命令来计算及绘制根轨迹。会出根轨迹后,可以交互地使用“rlocfind”命令来确定点击鼠标所选择的根轨迹上任意点所对应的K值,K值所对应的所有闭环极点值也可以使用形如“[K, PCL] = rlocfind(G1)”命令来显示。 (2)、波特图:bode(G1, omga) 另外,bode图还可以通过下列指令得出相位和裕角: [mag,phase,w] = bode(sys) (3)、奈奎斯特图:nuquist(G, omega) (2)课本:例4-1、4-2、4-7 五实验报告要求 (1)、实验指导书:实验四

思考题 请绘制下述传递函数的bode图和nyquist图。 1. 根据实验所测数据分别作出相应的幅频和相频特性曲线; 2. 将思考题的解题过程(含源程序)写在实验报告中。 幅频特性曲线相频特性曲线 Gs = zpk([10], [-5; -16; 9], 200) subplot(1, 2, 1) bode(Gs) grid subplot(1, 2, 2) nyquist(Gs) grid (2)课本:例4-1、4-2、4-7

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