当前位置:文档之家› (完整版)matlab第九讲教案

(完整版)matlab第九讲教案

(完整版)matlab第九讲教案
(完整版)matlab第九讲教案

西南科技大学本科生课程备课教案

计算机技术在安全工程中的应用

——Matlab入门及应用

授课教师:徐中慧

班级:

专业:安全技术及工程

第九章 高级绘图

课型:新授课 教具:多媒体教学设备,matlab 教学软件

一、目标与要求

掌握matlab 如何处理三种不同类型的图形文件,使用句柄图形指定绘图的句柄并调整特性,通过matlab 两种技术的任意一种创建动画。

二、教学重点与难点

本堂课教学的重点与难点在于引导学生掌握句柄图形的使用,并掌握matlab 创建动画的方法。

三、教学方法

本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。

四、教学内容

(1)火箭垂直向上发射。在t=0时火箭发动机关闭,此时火箭的高度为海拔500,速度为125m/s ,考虑重力加速度,根据等式

2

9.8()125500,02

h t t t t =-

++f ①创建函数heigh t ,以时间为输入变量,火箭的飞行高度为输出变量。利用函数对下面的②和③进行求解。

②时间增量为0.5秒,变化范围0到30秒,画出函数height 与时间的关系曲线。 ③计算火箭开始向地面降落的时间(可以使用函数max )。 ④创建函数height 的函数句柄height_handle 。

⑤以height_handle 作为函数fplot 的输入参数,画出0到60秒内的函数曲线。

⑥用函数fzero 求火箭返回地面所用的时间(当火箭返回地面时,函数height 的值应该等于0)。fzero 是复合函数,可以用函数或函数句柄作为输入参数。调用方法如下:

fzero(function_handl e ,x_guess)

函数fzero 的两个输入参数分别是函数句柄和函数值接近0时的x 的估算值。读者可以根据绘出的曲线选择合理的x_guess 值。 ①function output=height(t)

output=-4.9.*t.^2+125.*t+500;

%% two t=0:0.5:30; h=height(t); plot(t,h,'o-r') hold on %% three [a,b]=max(h); t_max=t(b) %% four

height_handle=@(t) height(t);

%% five

fplot(height_handle,[0,60]);

%% six

fzero(height_handle,30)

(2)①创建匿名函数my_function,计算下式:

253x

---+

x x e

②用函数fplot画出x在-5到+5之间的函数曲线。函数句柄可以作为函数fplot的输入参数。

③在此x范围内,用函数fminbnd求函数的最小值。fminbnd是复合函数,其输入参数可以是函数也可以是函数句柄。调用方法如下:

fminbnd(function_handle,xmin,xmax)

函数fminbnd有三个输入参数:函数句柄、x的最小值和x的最大值。利用该函数求在x的最小值和最大值之间函数的最小值。

my_function=@(x) -x.^2-5.*x+exp(x);

fplot(my_function,[-5,5]);

a=fminbnd(my_function,-5,5)

(3)西科大安家费提取利息计算。根据相关规定我国公民个人每月收入超过2000元需缴纳个人所得税。我国个人所得税采用阶梯税率,当月收入越高,所缴税款越多。西科大安家费的提取有多种形式:可以一次性提取,也可以等额多次提取。

问题1:编写函数M文件,计算每月定额提取一定数额的安家费所缴纳的税款及提取期限。(假设每月工资收入为4000元)

问题2:调用问题1编写的函数M文件,绘制总税款随定额提取金额和总税款随提取期限变化的二维图形

?问题一

①定义主函数M文件;

②计算当月应缴税工资部分;

③调用子函数计算缴纳的总税款和缴税的总期

限;

④编写子函数计算每月应缴纳的税款。

输入:安家费总金额,每月提取定额

输出:缴纳的总税款,缴税期限?问题二

①建立脚本M文件

②调用问题一建立的函数文件,计算总利息和

提取期限

③计算总利息随每月安家费提取金额变化的

二维图形

④计算总利息随提取期限变化的二维图形

(1)function [tax,duration]=mytax(s,x)

Y=4000+x;

Y1=Y-2000;

if rem(s,x)==0

duration=s./x;

tax=(myfunction(Y1)-myfunction(4000)).*duration;

else duration=fix(s./x)+1;

b=myfunction(s-x.*(duration-1));

tax=myfunction(Y1).*(duration-1)-myfunction(4000).*duration+b;

end

function tax=myfunction(a)

if a<=5000

tax=500*0.05+1500*0.1-25+(a-2000)*0.15;

elseif 5000

tax=500*0.05+1500*0.1+3000*0.15+(a-5000)*0.2;

elseif 20000

tax=500*0.05+1500*0.1+3000*0.15+15000*0.2+(a-20000)*0.25

else disp('error')

end

(2)x=2500:100:40000;

[a,b]=mytax(80000,x);

subplot(2,1,1)

plot(x,a,'-')

xlabel('money/permonth')

ylabel('tax')

grid

subplot(2,1,2)

plot(b,a,'-')

xlabel('month')

ylabel('tax')

grid

引言

工程中常用的基本图形是x-y坐标、极坐标和曲面等图形,常用于商业用途的图形是饼图、条形图和

柱状图。Matlab提供了重要的图形控制功能,使人们不仅可以处理图形(如数字照片),还能够创建物理过程的数据和模型的三维表示(曲面图形除外)。

图像的相关特性引入。

绝大多数的图形图像软件教程都会浅显地介绍一下位图、矢量图、分辨率、像素等基本概念。网上也有很多文章可以查阅了。

矢量图

矢量图使用线段和曲线描述图像,所以称为矢量,同时图形也包含了色彩和位置信息。例如树叶的矢量图,就是利用大量的点连接成曲线来描述树叶的轮廓线.然后根据轮廓线,在图像内部填充一定的色彩. 矢量图更多的用于工程作图中,比如我们用CAD作的图。

位图

位图就是我们称为像素的一格一格的小点来描述图像.大家的计算机屏幕其实就是一张包含大量像素点的网格.在位图中,上面我们看到的树叶图像将会由每一个网格中的像素点的位置和色彩值来决定.每一点的色彩是固定的,当我们在更高分辨率下观看图像时,每一个小点看上去就像是一个个马赛克色块, 像素

像素指一幅位图里面最小组成单位,像素不能再被划分为更小的单位。在一般情况下,它是一块正方形,带有颜色、明暗、相对于整个图像的坐标等信息,

一定数量的颜色有别的正方形小块排列组合,用以表示一幅点阵图像,也就是位图图像。通过数码相机拍摄、扫描仪扫描或位图软件输出的图像都是位图。

分辨率

分辨率:像素不可以再被划分为更小的点,但实际上像素是有大有小的。单位面积内容纳的正方形小块的数目,就是一幅图像的分辨率。单位面积内,容纳的像素越多,单个像素也越小,图像质量越高;反之,单位面积内容纳的像素越少,单个像素越大,图像质量越低。为表示方便,图像分辨不用面积来表示,而是用矩形的一边上的单位长度内所容纳的像素数来表示,长度单位一般是英寸,我们常说的印刷图像的分辨率是300,即表示这幅图像一英寸长度(合2.54厘米)内含有300个像素,一平方英寸内则有9万像素。

数字图像在计算机上以位图(bitmap)的形式存在,位图是一个矩形点阵,其中每一点称为像素(pixel),像素是数字图像中的基本单位。一幅m×n大小的图像,是由m×n个明暗度不等的像素组成的。

数字图像中各个像素所具有的明暗程度由灰度值(gray level)所标识。

灰度是指黑白图像中点的颜色深度,范围一般从0到255,白色为255 ,黑色为0。而由黑到白之间的明暗度均匀地划分为256个等级。故黑白图片也称灰度图像,在医学、图像识别领域有很广泛的用途对于黑白图像,每个像素用一个字节数据来表示,而在彩色图像中,每个像素需用三个字节数据来表述。彩色图像可以分解成红(R)、绿(G)、蓝(B)三个单色图像,任何一种颜色都可以由这三种颜色混合构成。在图像处理中,彩色图像的处理通常是通过对其三个单色图像分别处理而得到的。

(1)图像

因为Matlab是一个矩阵运算程序,所以它将图像存储为矩阵。在图像存储于矩阵中时,通常从图像的左上角开始,由左向右,自上而下来表示数据。在Matlab中有两个函数采用这种格式显示图像,它们分别是image和imagesc。imshow也常用。

在图像存储于矩阵中时,通常从图像的左上角开始,由左向右,自上而下来表示数据。最大正值通常表示红色。最小值通常表示蓝色。

Eg:x=[1:99;2:100;3:101];imagesc(x)

EG: peaks

①图像类型

Matlab可以识别三种不同的存储和表示图像的技术:

●亮度(或灰度)图像。

●索引图像。

●RGB(或真彩色)图像。

关键概念:两个函数用于显示图像,即imagesc和image。

亮度(或灰度)图像

利用尺度图像函数(imagesc)可以将山峰函数表示为灰度图像。在这种方法中,图像的色彩取决于色图。对存储于图像矩阵中的数值进行标度,并将其与一幅已知的图相关联。图jet colormap是默认的方式。当显示的参数与实际色彩不相关时,这种方法具有较好的运行效果。例如:函数peaks通常用于比较山峰和山谷的范围,但是用红色表示海拔高度并不明确,从美学的角度看,这是可以随意选择的。色图也可以提高图像中感兴趣的特征。

观察这样一个例子,传统的X光图像是胶片曝光后产生的结果,现如今许多X光图像不再使用胶片,而是被处理为数字图像,并存储在数据文件中。因为X光图像的亮度与颜色无关,所以根据需要可随意对文件进行操作。

Matlab中包含一个实例文件,是一张数字化的脊椎X光胶片图像,该图像适用于尺度图像函数显示。

下载文件:

load spine

该文件包含许多矩阵(查看工作窗口)。灰度矩阵被命名为X(大写),表示为

imagesc(x)

该函数所产生的图像的颜色取决于当前的colormap,其默认状态为jet。如果使用色图bone,那么这幅图看起来更像是传统的X光图片:

colormap(bone)

虽然通常把图像数据视为矩阵,但这些数据不一定要用标准的图形格式存储。Matlab中包含一个函数imfinfo,它能够读出标准图形文件的数据,并确定文件中包含的数据类型。命令行为: imfinfo(‘xxx.jpg’)

为了从这个图形文件中创建Matlab矩阵,使用图像读取函数imread,并给结果赋予变量名:

X=imread(‘mimas.jpg’);

imagesc(X)

索引图像

当图像的颜色很重要时,创建图像的技术称为索引图像。此时,矩阵不再是亮度值的列表。而是颜色的列表。所创建的图像更像是一幅由数字标出各区域颜色的图画。每元素包含一个与颜色对应的数字。颜色列表在另一个称为色图的n×3矩阵中,它定义n种不同的颜色,每种颜色用红、绿、蓝三原色来表示。每一幅图像有自己的定制色图,也可以使用内置的色图。

考虑一个内置的有关狒狒的样本图像,利用下面的命令获得:

load mandrill

文件包含索引矩阵X和色图map(检查工作窗口确认这些文件已经被下载;图像的名称通常用来对Matlab程序的存储)。函数image用于显示索引图像:

image(X)

colormap(map)

Matlab图像填满整个窗口显示,所以图像看上去有些扭曲。利用命令axis可以强制按正确的比例显示:

axis image

函数image和imagesc类似,然而,它们会给出不同的结果。在亮度图像中,色图gray与存储的色彩并不对应。确定被显示图像的文件类型非常重要,这有助于选择最佳的图像显示方式。索引图像通常以

GIF图片格式存储。但是,当使用函数imfinfo指定了文件参数后,文件格式就不会是这样。

真彩色(RGB)图像

第三种图像存储技术是将图像数据存储于m×n×3的三维矩阵中。三维矩阵包含行、列和页等三部分。真彩色图像文件包含三个页,每个页对应红、绿、蓝中的一种颜色亮度。真彩色图像文件包含三个页,每个页对应红、绿、蓝中的一种颜色亮度。

读写图像文件

读图像信息

①将图像信息读入matlab的最简单的方法可能是利用交互式的import wizard。在当前目录窗口中,只要双击要输入的图像文件名即可。

②对于大多数标准的图像格式而言,例如.jpg或.tif,函数imread是比较方便的方法。

③如果文件是.mat或者.dat格式,那么,调用函数load是最简单的输入数据的方法。对于.mat文件,可以不包括扩展名.mat。然而,对于.dat文件,则需要包含扩展名.dat。

load

以下是下载内置图像文件的常用方法以及实现在当前目录中输入图像矩阵和色图的命令。

load cape

image(X)

colormap(map)

axis image

axis off

存储图像文件

①Matlab图像的保存方法与一般图形文件的保存方法相同。选择

File——Save as……再选择保存图像的文件类型和位置。

②函数imwrite也可以对文件进行保存。根据需要保存数据类型,这个函数可以接受许多不同的输入。

如果输入数据是强度(灰度)数组或者真彩色(RGB)数组,那么,函数imwrite希望的输入形式为 imwrite(arrayname,’filename.format’)

arrayname 是Matlab数组名称;

filename是保存数据的文件名称;

format是文件扩展名,例如:jpg和tif

若保存RGB图像到一个名为flowers的.jpg文件中,则命令语句为

imwrite(X,’flowers.jpg’)

存储索引图像(具有定制色图的图像)需要同时保存数据矩阵和色图:

imwrite(arrayname,colormap_name,’filename.format’)

(2)句柄图形

句柄是分配给Matlab对象的昵称。

Matlab使用体系化结构来组织绘图信息。基本的绘图对象是图形。图形包含许多不同的对象,其中之一是坐标系。坐标覆盖在图形窗口的上面。坐标也可以包含许多不同的对象,其中之一是绘图。绘图覆盖在坐标的上面。

不论在命令窗口,还是在M文件,使用函数plot以后,matlab自动创建一个图形和一个恰当的坐标,然后,在坐标上绘制图形。Matlab对许多图形对象的特性使用默认值。例如,第一条曲线经常使用蓝色,除非用户要改变它。

①绘图的句柄

为一个绘图分配一个名称(称为句柄),可以简单方便的查询Matlab列出的绘图对象特征。

x=1:10;

y=x.*1.5;

h=plot(x,y)

其中变量h是绘图的句柄,当然也可以选择其它的变量名。利用函数get查询绘图的特性:

get(h)

DisplayName: ''

Annotation: [1x1 hg.Annotation]

Color: [0 0 1]

EraseMode: 'normal'

LineStyle: '-'

LineWidth: 0.5000

Marker: 'none'

MarkerSize: 6

MarkerEdgeColor: 'auto'

MarkerFaceColor: 'none'

XData: [1 2 3 4 5 6 7 8 9 10]

YData: [1.5000 3 4.5000 6 7.5000 9 10.5000 12 13.5000 15]

ZData: [1x0 double]

颜色特性列为[0 0 1]。颜色被描述为光线的每一种基本颜色:红、绿、蓝。数组[0 0 1]表示指定颜色没有红色和绿色,而是100%蓝色。

②图形的句柄

为操作方便,可以对图形直接指定句柄。因为前面用来绘图的图形窗口名称为figure1

H=figure(1)

get(H)

Alphamap = [ (1 by 64) double array]

CloseRequestFcn = closereq

Color = [0.8 0.8 0.8]

Colormap = [ (64 by 3) double array]

CurrentAxes = [171.005]

CurrentCharacter =

CurrentObject = []

CurrentPoint = [0 0]

DockControls = on

DoubleBuffer = on

可以看出图形窗口的特性列表与绘图曲线的特性列表是不相同的。例如:颜色Color = [0.8 0.8 0.8],它指定了红、绿、蓝具有相同的强度,当然结果是一个白色的背景。

如果没有图形指定句柄,则可以使用命令gcf(取得当前图形)查询Matlab,以确定当前图形的句柄名称:

get(gcf)

③坐标的句柄

与图形和绘图的句柄一样,通过函数gca(取得当前坐标)可以指定一个坐标的句柄:

x=1:10;

y=x.*1.5;

plot(x,y)

h_axis=gca;

get(h_axis)

ActivePositionProperty = outerposition

ALim = [0 1]

ALimMode = auto

AmbientLightColor = [1 1 1]

Box = on

CameraPosition = [5.5 7.5 17.3205]

CameraPositionMode = auto

CameraTarget = [5.5 7.5 0]

CameraTargetMode = auto

④注释坐标

除上面描述的三种组件外,还有一个叠加在绘图中的透明层。该层用来插入一些注释对象到图窗口中,例如线型、图例说明和文本框。

⑤使用句柄操作图形

利用函数set可以改变对象的特性。函数set的第一个输入内容是对象句柄,然后用不同的字符串指定特性的名称,紧随其后是一个新的特性值。

set(h,'color','red')

set(h,'name','My graphy')

或者set(gcf,'name','My graphy')

在图形菜单栏选择view,并选择特性编辑器,可以交互式的完成上述功能:

View——property editor

(2)动画

MATLAB 产生动画的方式有两种:

电影方式:

以影像的方式预存多个画面,再将这些画面快速的呈现在屏幕上,就可以得到动画的效果。此种方式类似于电影的原理,可以产生很缤纷亮丽的动画,但是其缺点为每个画面都必需事先备妥,无法进行及时成像(Real-time Rendering),而且每个画面,以至于整套动画,都必需占用相当大的内存空间。

对象方式:

在 MATLAB 的「握把式图形」(Handle Graphics)概念下,所有的曲线或曲面均可被视为一个对象,MATLAB 可以很快的抹去旧曲线,并产生相似但不同的新曲线,此时就可以看到曲线随时间而变化的效果。使用对象方式(即握把式图形)所产生的动画,可以呈现实时的变化,也不需要太高的内存需求,但其缺点是较难产生太复杂的动画。

质点方式:

用comet或comet3等函数绘制彗星图,它能演示一个质点的运动。

①以质点的形式产生动画

质点运动轨迹动画方式是最简单的动画产生方式,顾名思义,就是产生一个顺着曲线轨迹运动的质点来操作。Matlab中提供了comet和comet3命令来实现质点运动轨迹动画的绘制,其常用格式为:

https://www.doczj.com/doc/767178501.html,et(xdata,ydata,p)

2.p是指彗星的尾巴的长度,可以是常数或者size(x)大小的向量

该方法的使用一般使用步骤如下:

step1:求解出质点完整的运动轨迹坐标x,y和z

step2:使用comet或者comet3直接绘制动点

t=0:pi/50:10*pi;

x=30*sin(t);

y=30*cos(t);

z=t;

comet3(x,y,z,0.5)

平抛运动

vx = 40;

t = 0:0.01:10;

x = vx*t;

y = -9.8*t.^2/2;

comet(x,y)

导弹发射

vx = 100*cos(1/4*pi);

vy = 100*sin(1/4*pi);

t = 0:0.001:15;

x = vx*t;

y = vy*t-9.8*t.^2/2;

comet(x,y,0.05)

②以电影方式产生动画

电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlab环境播放。这是其它两种动画制作方法所不具备的。

以电影方式来产生动画,可由下列几个步骤来达成:

step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。

step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。

getframe函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。

该函数格式有:

(1)F=getframe,从当前图形框中得到动画帧

(2)F=getframe(h),从图形句柄h中得到动画帧

(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧

step3:调用movie函数按照指定的速度和次数运行该电影动画。

当创建了一系列的动画帧后,可以利用movie函数播放这些动画帧。

该函数的主要格式有:

(1)movie(M),将矩阵M中的动画帧播放一次

(2)movie(M,n),将矩阵M中的动画帧播放n次

(3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次

step4:调用movie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi 文件。这样,即使脱离了matlab环境都可以播放动画。

movie2avi一般是将Matlab本身用getframe获得的帧频记录转换成avi视频

movie2avi的调用格式:

movie2avi(存储帧频的矩阵, avi名称)

movie2avi(mov, 'move.avi')

电影动画之范例一

在下例中,我们将以不同的角度来显示 peaks 函数,并将其结果以电影的方式来呈现动画。

范例: movie01.m

clear M % 清除电影资料矩阵 M

n = 50; % 抓取 50 个画面

peaks;

fprintf('抓取画面中...\n');

for i = 1:n

view([-37.5+i*360/n, 30]); % 改变观测角度

M(i) = getframe; % 抓取画面,并存入电影资料矩阵 M

end

fprintf('播放电影中...\n');

movie(M, 3); % 播放电影三次

movie2avi(M,'1.avi')

最后一个 frame 的画面

MATLAB提供了设置视点的函数view。其调用格

式为:

view(az,el)

az是azimuth(方位角)的缩写,EL是elevation

(仰角)的缩写。它们均以度为单位。系统缺省的

视点定义为方位角-37.5°,仰角30°。

当x轴平行观察者身体,y轴垂直于观察者身体时,

az=0;以此点为起点,绕着z轴顺时针运动,az为

正,逆时针为负。

电影动画之范例二

将 peaks 函数画在圆盘上,然后再变换此函数的高度,以动画呈现范例: movie02.m clear M % 清除电影资料矩阵 M

r=linspace(0, 4, 30); % 圆盘的半径

t=linspace(0, 2*pi, 50); % 圆盘的极坐标角度

[rr, tt]=meshgrid(r, t);

xx=rr.*cos(tt); % 产生圆盘上的 x 坐标

yy=rr.*sin(tt); % 产生圆盘上的 y 坐标

zz=peaks(xx,yy); % 产生 peaks 在极坐标的数据

n = 30; % 抓取 30 个画面

scale = cos(linspace(0, 2*pi, n));

fprintf('抓取画面中...\n');

for i = 1:n

surf(xx, yy, zz*scale(i)); % 画图

axis([-inf inf -inf inf -8.5 8.5]); % 固定图轴的范围

box on

M(i) = getframe; % 抓取画面,并存入电影资料矩阵 M

end

fprintf('播放电影中...\n');

movie(M, 5); % 播放电影 5 次

最后一个 frame 的画面

电影动画之范例三

改变影像的色盘矩阵,让影像出现「从正片变到负片」的效果范例: movie03.m

clear M % 清除电影资料矩阵 M

load clown.mat

image(X); colormap(map); % 画出小丑脸

n = 30; % 抓取 30 个画面

fprintf('抓取画面中...\n');

for i = 1:n

colormap(((i-1)*(1-map)+(n-i)*map)/n); % 改变色盘矩阵

M(i) = getframe; % 抓取画面,并存入电影资料矩阵 M

end

fprintf('播放电影中...\n');

movie(M, -5); % 播放电影 5 次(含正向与逆向播放)

在上述范例中,正片(如下张投影片图左)的色盘矩阵是 map ,而 1-map 则是负片(如下张投影片图右)的色盘矩阵,因此我们在抓影片时,让色盘矩阵进行渐进式的变化,因此呈现的电影就有「从正片变到负片」的效果。

另外,movie(M, -5) 代表电影将播放 5 次,但由于第二个参数是负数,所以每次播放会包含一次「正向播放」及一次「逆向播放」。

正片 色盘矩阵是 map 负片 色盘矩阵是 1-map

③以对象方式产生动画

? 以电影方式产生动画可以说是「暴力法」,因为此方法占掉了许多内存空间。另一个技巧性较高的

方法则是以对象方式产生动画,此种方法不需要大量的内存,而且可以产生「实时」(Real-time )或「交互式」(Interactive )的动画。

? MATLAB 的所有图形组件(曲线、曲面、图轴等)都是对象,您可以控制这些对象的各种性质,此

种特性称为「握把式图形」(Handle Graphics )。握把式图形包含的层面很广,但牵涉到动画部份的基本概念并不复杂,以下我们以曲线的动画来说明。 曲线的动画

? 我们可以快速地改变图形对象的性质(如颜色、坐标等),就可以达到动画的效果 ? 每一条曲线都有下列三种性质:

xdata :此为一向量,代表曲线的 x 坐标值 ydata :此为一向量,代表曲线的 y 坐标值

EraseMode :此为一字符串,代表曲线被抹除的方式,亦即当 xdata 或 ydata 被改变时,对于旧曲线的处理方式。

曲线的 EraseMode

EraseMode 对于动画的呈现相当重要,此字符串可是下列几种选择: normal :重画整个画面。

xor :将旧曲线的点以 xor 的方式还原。 background :将旧曲线的点改成背景颜色。 none :保留旧曲线的点,不做任何处理。 在上述四种 EraseMode 中,耗费时间的次序是

normal > xor > background > none

xor 和 background 很接近,但是 background 会抹去其它旧曲线所扫过的其它对象(如图轴、网格线、另一条曲线等),所以较少用到,所以一般在产生动画时,最常用到的 EraseMode 就是 xor 。

MATLAB 中,创建擦除重绘动画的过程分为以下三步: step1:设置重绘对象的擦除模式'EraseMode'模式

Matlab 的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有三种擦除模式:

none :重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线和旋转曲线的生成过程

background :在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何图形

Xor :在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种模式能产生图形对象移动的效果

step2:在循环语句中使用set 更改图形的xdata,ydata 和zdata 等坐标数据

step3:使用darwnow 命令刷新屏幕

曲线的动画

? 有了这些概念后,产生曲线的动画就很容易了!其主要步骤有两点:

? 产生一条曲线,其 EraseMode 为 xor ,background ,或 none 。 ? 在 for-loop 之中,改变此曲线的 xdata 或 ydata (或两者)。

? 我们产生一条随 x 而衰减的正弦曲线,并让 k 随时间而便大(即改变正弦波的相角),使整条曲

线产生舞动的效果。

我们产生一条衰减的正弦曲线

让 k 随时间而变大(即改变正弦波的相角),使整条曲线产生舞动的效果。 x = 0:0.1:8*pi;

h = plot(x, sin(x).*exp(-x/5), 'EraseMode', 'xor'); axis([-inf inf -1 1]); % 设定图轴的范围 grid on % 画出网格线 for i = 1:5000

y = sin(x+i/50).*exp(-x/5);

set(h, 'ydata', y); % 设定新的 y 坐标 drawnow % 立即作图 end

最后一个 frame 的画面

5

)sin(x e

k x y -

+=

在上例中,我们使用 set 指令,总共改变曲线的 y 坐标 5000 次,并以 xor 的方式抹掉旧曲线。drawnow 的作用是使 MATLAB 立刻处理 set 指令,若无 drawnow,MATLAB 会累积 set 指令,直到

for-loop 结束时再一并处理图形的变化,这时就不会看到动画的效果。

如果您将上例的 EraseMode 改成 background,则会发现曲线会“抹掉”图形中的网格线及代表图轴的直线。

如果您将上例的 EraseMode 改成 none,则旧的曲线会被保留下来,产生不同的效果。

对象动画之范例: MATLAB

MATLAB 有很多对象动画之范例:

lorenz:以3D动画呈现的 Lorenz 混沌方程式(Chaotic Equation),好像慧星在运行。

truss:一座桥梁在地震时的震动方式,共有 12 种喔!

travel:显示如何以杂乱搜寻(Random Search)的方式来解 Traveling Salesperson Problem.

fitdemo:显示如何以 Downhill Simplex Search 来解决非线性曲线拟合(Nonlinear Curve Fitting)的问题。

spinner:常见的屏幕保护程序。

xphide:试试您的眼力…。

对象动画之范例: MATLAB

若您有安装 Simulink,可试试下列动态系统仿真加上动画呈现:

onecart:传统的弹簧加上砝码的动态系统。

dblcart1:一条弹簧加上两个砝码的动态系统。

simppend:简单的单摆系统。

dblpend1:两截的摆动系统。

dblpend2:更复杂的摆动系统。

penddemo:倒单摆系统。

对象动画之范例: 模糊工具箱

如果您有安装 Fuzzy Logic Toolbox,可以试试由张老师开发的各项模拟及动画展示:

fcmdemo: Fuzzy C-means Clustering。

juggler:用板子接皮球。

invkine:两截机器手臂的 Inverse Kinematics。

slcp1:倒单摆,杆子长度随时间而变,您可以控制所欲到达的位置。

slcpp1:双倒单摆,其中一个杆子的长度随时间而变,您可以控制所欲到达的位置。

slbb:跷跷板加上滚球系统,您可以控制球的最后位置。

sltbu:倒车入库系统

(3)其它可视化方法

①透明度

利用matlab画出的曲面均采用不透明的色彩添加策略。对大多数曲面而言,这种方法很好,但是可能遮盖住其它的细节。例如:下面的命令行可以创建两个球形,一个球在另一个球当中

clear,clc,clf

n=20;

Theta=linspace(-pi,pi,n);

Phi=linspace(-pi/2,pi/2,n);

[theta,phi]=meshgrid(Theta,Phi);

X=cos(phi).*cos(theta);

Y=cos(phi).*sin(theta);

Z=sin(phi);

surf(X,Y,Z)

axis square

axis([-2,2,-2,2,-2,2])

hold on

pause(5)

surf(2*X,2*Y,2*Z)

pause(5)

alpha(0.3)

内部球被外部球遮挡,除非采用下面的透明度命令: alpha(0.3)

该命令被用来设置透明度的等级,数值1表示不透明,数值0表示完全透明。透明度能够被添加到曲面、图像和碎片对象。

②隐藏线

当创建网格绘图时,曲面被遮挡的部分不会被画出来,这通常看上去比较自然。

clear,clc,clf

n=20;

Theta=linspace(-pi,pi,n);

Phi=linspace(-pi/2,pi/2,n);

[theta,phi]=meshgrid(Theta,Phi);

X=cos(phi).*cos(theta);

Y=cos(phi).*sin(theta);

Z=sin(phi);

subplot(1,2,1)

mesh(X,Y,Z)

hidden on

subplot(1,2,2)

mesh(X,Y,Z)

hidden off

hidden on表示图中遮挡部分的网络线被自动隐藏,使用命令hidden off后,被遮挡部分的网格线没有被隐藏起来。

③光源

Matlab提供很多调整曲面光源的方法。可以改变真实光源的位置,也能够在播放动画期间进行调整。绝大多数绘图只是利用函数camlight实现光源的开启或关闭,该函数的默认值是关闭的。

照相机光源的默认位置是在“摄影镜头”的右上方,提供如下选项:

camlight right 摄影镜头的右上方(默认位置)

camlight left 摄影镜头的左上方

camlight headline 摄影镜头的位置

camlight(azimuth,elevation) 用户自主确定光源位置

camlight(‘infinite’) 将光源定位于无穷远(如同太阳光)

sphere

camlight

数学实验练习题(MATLAB)

注意:在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上). 第一次练习题 1.求解下列各题: 1)30sin lim x mx mx x ->- 2)(4)cos ,1000.0=x mx y e y 求 3)21/2 0mx e dx ?(求近似值,可以先用inline 定义被积函数,然后用quad 命令) 4)4 224x dx m x +? 5 0x =展开(最高次幂为8). 2.对矩阵21102041A m -?? ?= ? ?-?? ,分别求逆矩阵,特征值,特征向量,行列式,并求矩阵,P D (D 是对角矩阵),使得1A PDP -=。 3. 已知2 1(),()2f x e x μσ=--分别在下列条件下画出)(x f 的图形: (1)/600m σ=,μ分别为0,1,1-(在同一坐标系上作图); (2)0μ=,σ分别为1,2,4,/100m (在同一坐标系上作图). 4.画 (1)sin 020cos 02100x u t t y u t u t z m ??=≤≤?=?≤≤??=?

(2) sin()03,03z mxy x y =≤≤≤≤ (3)sin()(/100cos )02cos()(/100cos )02sin x t m u t y t m u u z u π π=+?≤≤?=+?≤≤?=? 的图(第4题只要写出程序). 5.对于方程50.10200 m x x --=,先画出左边的函数在合适的区间上的图形,借助于软件中的方程求根的命令求出所有的实根,找出函数的单调区间,结合高等数学的知识说明函数为什么在这些区间上是单调的,以及该方程确实只有你求出的这些实根。最后写出你做此题的体会. 第二次练习题 判断迭代收敛速度的程序 x0=1;stopc=1;eps=10^(-8);a=1;c=1;b=2*c;d=a;k=0; f=inline('(a*x+b)/(c*x+d)'); kmax=100; while stopc>eps&k

(完整版)Matlab基本语法教案

第二章基本语法 2.1 MATLAB的矩阵、变量与表达式 在MATLAB系统中,只管理着一种对象---矩阵(包括复数矩阵),任何数量在MATLAB 中是作为1x1的矩阵来处理的。 一、矩阵的创建: 1. 在MATLAB中创建矩阵的原则: (1) 矩阵元素必须写在“[]”内; (2) 矩阵的同一行之间用空格或“,”分隔; (3) 矩阵的行与行之间用分号或回车符分隔; (4) 矩阵的尺寸不必预先定义; (5) 矩阵元素可以是数值、变量、表达式或函数。 2. 创建矩阵的四种方法。 (1) 在命令窗口直接输入: 如输入:A=[1,2,3;4,5,6;7,8,9] 则显示:A= 1 2 3 4 5 6 7 8 9 也可用空格代替逗号,用回车代替分号: 如上例:A=[1 2 3 4 5 6 7 8 9] 则显示:A= 1 2 3 4 5 6 7 8 9 (2) 由M文件创建矩阵: 有时编程需要用M文件创建矩阵。或者当矩阵尺寸较大时,可以按矩阵的输入方式编辑一个M 文件(可用循环程序来做),在命令窗口直接执行该文件,即可将矩阵调入工作空间。 (3) 由函数创建矩阵: 对于一些特殊的矩阵,可以利用MATLAB的内部函数或用户自定义函数创建矩阵。 如diag()函数可生成对角阵。ones(m,n) ; zeros(m,n) (4) 通过数据文件创建矩阵: save 文件名(其中,文件名是*.mat文件) load 文件名例:工作目录下有temp.mat文件,可以执行load temp

3. 复数矩阵表示 (1) 复数表示 复数的虚根单位用i,j表示,即:z=3+4i或z=3+4j. 例如输入z=3+4i 输入z=3+4j 得到:得到: z = z = 3.0000 + 4.0000i 3.0000 + 4.0000i (2) 复数矩阵 A=[1 2;3 4]+i*[5 6;7 8] 或者A=[1+5i 2+6i;3+7i 4+8i],都得到: A = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i 二、MATLAB的变量和表达式 1.变量名命名规则 ?可以是字母、数字或下划线,但第一个字符必须是字母。 ?长度<=31 ?分辨大小写的,M和m是两个变量。 ?无须对变量的类型进行说明,当需要使用一个新变量时,只须直接对其赋值即可。 2.表达式则是由运算符、函数调用、变量名以及特殊字符组成的式子。 3.MATLAB中基本的赋值语句为: (1) 形式一:变量名=表达式 将表达式的结果赋给变量名(表达式的运算结果都是一个矩阵)。 (2) 形式二:表达式 计算表达式的值,将其值赋给MATLAB的永久变量ans。 上面两种形式,当表达式由分号“;”结束时,变量结果不显示。当表达式由逗号“,”或换行号结束,则将结果显示出来。 注: 1)MATLAB中有几个变量不能被clear清除,称永久变量。(其他变量名最好不要与此同)。即ans:当不指明某一语句的计算结果赋给哪个变量时,系统自动将该计算结果赋给ans; eps:计算机能产生的绝对值最小的浮点数;

MATLAB实验指导书

实验一MATLAB 工作环境熟悉及简单命令的执行 一、 实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、 实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条(T oolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3; (2)area=pi*2.5^2; (3)已知x=3,y=4,在MATLAB 中求z : ()23 2y x y x z -= ; (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 ) >>m1( 2 : 3 , 1 : 3 ) >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs 查看函数abs 的用法及用途,计算abs( 3 + 4i ); (6)执行命令 >>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y) (7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 四、思考题 1、以下变量名是否合法?为什么? (1)x2; (2)3col ; (3)_row ; (4)for ;

matlab第八讲教案

西南科技大学本科生课程备课教案 计算机技术在安全工程中的应用 ——Matlab入门及应用 授课教师:徐中慧 班级: 专业:安全技术及工程

第八章绘图 课型:新授课 教具:多媒体教学设备,matlab教学软件 一、目标与要求 掌握matlab中二维绘图、三维绘图、子图等相关图形绘制功能。 二、教学重点与难点 本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用绘图的相关函数实现相应的功能。 三、教学方法 本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。 四、教学内容 课后习题讲解 (1)用switch/case,menu结构编写程序求解下列问题:提示用户输入入学时间是一年、二年、三年还是四年,输入数据是字符串。根据输入数据决定期末考试的时间。其中,一年级周一考试,二年级周二考试,三年级周三考试,四年级周四考试。 Input=menu('Enter a value for your grade','one year','two years','three years','four years'); switch Input case 1 disp('Monday') case 2 disp('Tuesday') case 3 disp('Wednesday') case 4 disp('Thursday') end (2)编写程序,提示用户输入购买方糖的数量,输入数据是糖的块数。计算购买方糖的费用。价格确定方法是:1块=$0.75;2块=1.25;3块=1.65。当多于3块时,总费用=$1.65+$0.30*(购买数量-3)。sugar=input('Enter a value for quantityof sugar\n'); switch sugar case 1 fprintf('%3.0f lump sugar costs $0.75\n',sugar) case 2 fprintf('%3.0f lump sugar cost $1.25\n',sugar) case 3 fprintf('%3.0f lump sugar cost $1.65\n',sugar) otherwise output=1.65+0.3*(sugar-3); fprintf('%3.0f lump sugars cost $%4.2f\n',sugar,output) end

《MATLAB应用技术》实验指导书

M A T L A B 实 验 指 导 书 电子信息工程学院 2012.02

目录 实验一MATLAB安装与界面 (1) 实验二MATLAB符号计算与应用 (2) 实验三MATLAB数值数组与向量化运算 (4) 实验四MATLAB数值计算 (7) 实验五MATLAB可视化 (10) 实验六M文件及MATLAB综合应用 (16)

实验一Matlab安装与界面 【实验目的】 【实验原理】 1. 安装MATALB软件,并按理论教学内容逐一熟悉软件界面及软件特点。 【实验仪器】 1.配置在PIV 2.0GHZ/512MB以上的PC机; 2. MATALB7.0以上版本软件。 【实验内容及步骤】 1. 完成MATLAB软件安装; 2.熟悉MATLAB运行环境。 (1)命令窗口的使用。 (2)工作空间窗口的使用。 (3)工作目录、搜索路径的设置。 (4)命令历史记录窗口的使用。 (5)了解各菜单的功能。 3. 图示复数 i z i z2 1 ,3 4 2 1 + = + =的和展示MATLAB的可视化能力; 4. 画出衰减振荡曲线 t e y t 3 sin 3 - =,t的取值范围是] 4,0[π;展示数组运算的优点及 MATLAB的可视化能力。 5. 创建一个M文件,输入步骤4的相关程序,运行程序并变换名称保存,将工作空间中的y变量的MAT文件变换路径输出保存,然后再向内存装载MAT文件。 6. 以命令窗口中输入help Laplace、help浏览器中搜索两种方式体会MATLAB帮助系统的特点和功能。 【实验报告要求】 1.整理实验结果。 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上机指导书 ************************ 昆明理工大学机电学院 彭用新 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/767178501.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数学实验第二版答案(胡良剑)

数学实验答案 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语言平台及基本运算 一、实验目的 1、熟悉MATLAB基本的操作界面。 2、掌握MATLAB中变量、数组、向量等对象的生成方法。 3、掌握矩阵的生成和基本运算方法。 4、掌握MATLAB中的常用绘图命令使用方法 二、实验设备 计算机,MATLAB语言环境 三、实验指导原理 1、常见数学函数 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则 ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 系统的在线帮助 (1) help 命令: 1).当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2).当想了解某一主题的内容时,如输入: >> help syntax (了解 Matlab 的语法规定) 3).当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数 sqrt 的相关信息)

(2) lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 3、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: (1)数值型向量(矩阵)的输入 1).任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ]内;例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2).系统中提供了多个命令用于输入特殊的矩阵: 上面函数的具体用法,可以用帮助命令 help 得到。如:help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros.等等 4、数组(矩阵)的点运算 运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方), 例4: >> g = [1 2 3 4];h = [4 3 2 1]; >> s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h 5、矩阵的运算

MATLAB基础及应用实验指导书

MATLAB基础及应用实验指导书

MATLAB基础及应用课程实验指导书 实验一软件环境和基本操作熟悉 一、实验目的 ①熟悉MATLAB 主界面,并学会简单的菜单操作。 ②学会简单的矩阵输入与信号输入。 ③掌握部分绘图函数。 二、实验内容 熟悉MATLAB操作环境,通过简单操作熟悉MATLAB的基本使用方法。 三、实验要求与步骤 1、用户第一次使用MATLAB 时,建议首先在屏幕上键入demo 命令,它将启动MATLAB 的演试程序,用户可在此演示程序中领略MATLAB 所提供的强大的运算与绘图功能。也可以键入help 进行进一步了解。 MATLAB 启动界面如图所示: MATLAB 语言最基本的赋值语句结构为:变量名列表= 表达式。表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。如果变量名和“= ”省略,则ans 变量将自动建立,例如键入:1900/81 ,得到输出结果:ans =23.4568 。 MATLAB 中变量命名的原则要求必须以英文字母开头,文件夹名字中可以

还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的。这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。 2、用户工作目录和当前目录的建立和设置 1)为管理方便,每个用户在使用MATLAB 前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。例如首先打开资源管理器,在E 驱动器下可以根据自己喜好建立一个新文件夹,但应注意:该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB 中为变量和文件名命名原则是一致的。尽管MATLAB\work 允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。 2)为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB 命令窗口桌面上方通过目录设置栏来实现。 3)把自己的工作目录加到MATLAB 搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。MATLAB 工作时,基本搜索过程为:首先在工作空间,即MATLAB 内存中进行检查,看输入的指令是不是变量;如不是,则检查输入指令是不是内建函数(比如sin 函数等);如不是,则在当前目录上,检查是否有与输入指令相同的M 文件存在;如还没有,则在MATLAB 定义的搜索路径其他目录中,检查是否有该M 文件存在。设置方法是通过File 菜单下设置路径对话框进行。 3、熟悉简单的矩阵输入 1)从屏幕上输入矩阵A=[1 2 3 ;4 5 6;7 8 9] 回车 A=[1,2,3;4,5,6;7,8,9] 回车 观察输出结果。 2)试用回车代替分号,观察输出结果。 3)输入size(A) ,观察结果。 4)输入矩阵B=[9,8,7;6,5,4;3,2,1];回车 输入矩阵C=[4,5,6;7,8,9;1,2,3];回车,然后分别键入 A B C 回车观察结果。 5)选择File | new 菜单中的M-file ,输入B=[9,8,7;6,5,4;3,2,1] ;保存为

Matlab数学实验一2015(标准答案版)

Matlab数学实验一——matlab初体验 一、实验目的及意义 [1] 熟悉MATLAB软件的用户环境; [2] 了解MATLAB软件的一般目的命令; [3] 掌握MATLAB数组操作与运算函数; 通过该实验的学习,使学生能熟悉matlab的基础应用,初步应用MATLAB软件解决一些简单问题。 二、实验内容 1.认识matlab的界面和基本操作 2.了解matlab的数据输出方式(format) 3. MATLAB软件的数组(矩阵)操作及运算练习; 三、实验任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→原理→算法与编程→计算结果或图形→心得体会) 完成如下题目,并按照实验报告格式和要求填写实验报告 1.在commandwindow中分别输入如下值,看它们的值等于多少,并用matlab的help中查询这些缺省预定义变量的含义,用中文写出它们的意义。 ijeps inf nan pi realmaxrealmin 2.分别输入一个分数、整数、小数等,(如:a=1/9),观察显示结果,并使用format函数控制数据的显示格式,如:分别输入format short、format long、format short e、format long g、format bank、format hex等,然后再在命令窗口中输入a,显示a的值的不同形式,并理解这些格式的含义。 3.测试函数clear、clc的含义及所带参数的含义(利用matlab的help功能)。 4. 写出在命令窗口中的计算步骤和运行结果。 (1)计算 1.22 10 (ln log) 81 e ππ +- ; >>(log(pi)+log(pi)/log(10)-exp(1.2))^2/81 >>ans = 0.0348 (2) >> x=2;y=4; >> z=x^2+exp(x+y)-y*log(x)-3 z = 401.6562 (3)输入变量 13 5.3, 25 a b ?? ==?? ?? ,在工作空间中使用who,whos,并用save命令将变量存入”D:\exe0 1.mat”文件。测试clear命令,然后用load命令将保存的”D:\exe01.mat”文件载入>> a=5.3 a=

MATLAB实验指导

实验报告 课程名称:MATLAB基础 授课班级: 学号: 姓名: 指导老师:

MATLAB实验一:MATLAB语言基本概念实验 一、实验目的: 1. 熟悉MATLAB语言及使用环境; 2.掌握MATLAB的常用命令; 3.掌握MATLAB的工作空间的使用; 4.掌握MATLAB的获得帮助的途径。 5. 掌握科学计算的有关方法,熟悉MATLAB语言及其在科学计算中的运用; 6.掌握MATLAB的命令运行方式和M文件运行方式; 7.掌握矩阵在MATLAB中的运用。 二、实验方案分析及设计: 本次实验主要目的是了解MATLAB的使用环境,以及常用的一些命令的使用;了解矩阵在MATLAB实验中的具体运用,以及相关的一些符号命令的使用。 三、实验器材: 电脑一台,MATLAB软件 四、实验步骤: 打开MATLAB程序,将实验内容中的题目依次输入MATLAB中,运行得到并记录结果,最后再对所得结果进行验证。 五、实验内容及要求: 1. 熟悉MATLAB工作空间的功能,将工作空间中的变量保存为M文件,并提取该文件中的变量。(该题只需在MATLAB环境中操作,不用在实验报告中写结果) 2.熟悉MATLAB获取帮助的途径,将所有plot开头的函数列出来,并详细给出plotfis 函数的使用方法。(该题只需在MATLAB环境中操作,不用在实验报告中写结果) 3. 输入 A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2;3 3 3], 在命令窗口中执行下列表达式,写出实验结果并掌握其含义: A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 4.输入 C=1:2:20,则 C(i)表示什么(写出实验结果)?其中i=1,2,3, (10)

MATLAB数学实验A

clear; clc; a=1;b=1; ezplot(sprintf('x^2/%f-y^2/%f',a^2,b^2)); hold on; ezplot(sprintf('x^2/%f-y^2/%f-1',a^2,b^2)); ezsurf('sin(a)*cos(b)','sin(a)*sin(b)','cos(a)',[0,pi,0,2*pi],60); hold on; ezsurf('x^2+y^2',[-1,1,-1,1],60);

clear all; x=-8:0.1:8; y=-8:0.1:8; [X,Y]=meshgrid(x,y); Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2+2); [X,Y,Z]=peaks(50); surf(X,Y,Z)

syms x y; y=2*x^3-6*x^2-18*x+7; solve(diff(y,x),x) x=-1;eval(y) x=3;eval(y)

syms x y; z='x*y'; dblquad(z,1,4,-1,2) 结果 ans = 11.2500 求函数1+x -exp(2*x)+5的原函数clear all syms x C; f=int(1+x -exp(2*x)+5,'x')+C syms x y; >> x=0:0.01:1; >> y=sin(sin(x)); >> trapz(x,y)

x=0:0.05:1; y=[1.97687 2.17002 2.34158 2.46389 2.71512 3.06045 3.27829 3.51992 3.8215 4.2435 4.55188 4.88753 5.15594 5.698 6.04606 6.42701 7.00342 7.50192 7.89178 8.49315 9.0938] cftool 解常微分方程y’=-0.9y/(1+2x)的数值解y(0)=1 从0到0. 1的数值解,取步长0.02 clear all x1=0; x2=0.1; h=0.02; y(1,1)=1;

matlab实验指导

《数字信号处理》MATLAB实验指导

实验一:离散时间信号和离散时间系统 一、 实验目的: 1、 以MA TLAB 为工具学习离散时间信号的图形表示; 2、 以课本提供的例程,练习、理解典型离散信号及其基本运算; 3、 通过MATLAB 仿真简单的离散时间系统,研究其时域特性; 4、 加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。 二、 实验内容: 1、 典型序列的产生与显示; 2、 序列的简单运算; 3、 复合和复杂信号的产生与显示; 4、 离散时间系统的仿真:线性和非线性系统、时变和非时变系统的仿真; 5、 线性时不变离散时间系统:系统冲激响应、卷积运算、系统的级联、系统的稳 定性; 三、实验例程: 1、 参照课本例程产生下列序列,并用plot 、stem 好人subplot 命令绘出其图形: ①单位取样序列()n δ;②单位阶跃序列()n μ;③矩形序列RN(n),④斜变序列()n n μ。 所需输入的数据是产生序列的长度L 和抽样频率F T 。 % Program P1_1 % Generation of a Unit Sample Sequence clf; % Generate a vector from -10 to 20 n = -10:20; % Generate the unit sample sequence u = [zeros(1,10) 1 zeros(1,20)]; % Plot the unit sample sequence stem(n,u); xlabel('Time index n');ylabel('Amplitude'); title('Unit Sample Sequence'); axis([-10 20 0 1.2]); 2、 编写MATLAB 实指数序列程序, % Program P1_3 % Generation of a real exponential sequence clf; n = 0:35; a = 1.2; K = 0.2; x = K*a.^n;

数学实验matlab练习题

2015-2016数学实验练习题 一、选择题 1.清除Matlab工作空间(wordspace)变量的命令是(B ) A. clc B. clear C. clf D.delete 2. 清除当前屏幕上显示的所有内容,但不清除工作空间中的数据的命令是( A ) A. clc B. clear C. clf D.delete 3. 用来清除图形的命令( C ) A. clc B. clear C. clf D.delete 4. 在MATLAB程序中,使命令行不显示运算结果的符号是( A ) A. ; B. % C. # D. & 5. 在MATLAB程序中,可以将某行表示为注释行的符号是( B ) A. ; B. % C. # D. & 6.在循环结构中跳出循环,执行循环后面代码的命令为 ( B ) A. return B. break C. continue D. Keyboard 7.在循环结构中跳出循环,但继续下次循环的命令为( C ) A. return B. break C. continue D. Keyboard 8. MATLAB中用于声明全局变量的关键字是( C ) A. inf B. syms C. global D. function 9. 用户可以通过下面哪项获得指令的使用说明( A ) A. help B. load C. demo D. lookfor 10.在MATLAB命令窗口中键入命令S=zoros(3);可生成一个三行三列的零矩阵,如果省略了变量名S,MATLAB表现计算结果将用下面的哪一变量名做缺省变量名( A ) A. ans; B. pi; C. NaN; D. Eps. 11. 9/0的结果是( B ) A. NAN; B. Inf; C. eps; D. 0 12.在MATLAB中程序或语句的执行结果都可以用不同格式显示,将数据结果显示为分数形式,用下面哪一条命令语句( D ) A. format long; B. format long e; C. format bank; D. fromat rat 13. 下列MATLAB命令中是构造1行3列的(-1,1)均匀分布随机矩阵的命令的是(D)

MATLAB实验指导书(DOC)

MATLAB 实验指导书

前言 MATLAB程序设计语言是一种高性能的、用于科学和技术计算的计算机语言。它是一种集数学计算、分析、可视化、算法开发与发布等于一体的软件平台。自1984年MathWorks公司推出以来,MATLAB以惊人的速度应用于自动化、汽车、电子、仪器仪表和通讯等领域与行业。MATLAB有助于我们快速高效地解决问题。MATLAB相关实验课程的学习能加强学生对MATLAB程序设计语言理解及动手能力的训练,以便深入掌握和领会MATLAB应用技术。

目录 基础型实验............................................................................................ - 1 - 实验一MATLAB集成环境使用与基本操作命令练习 ............. - 1 - 实验二MATLAB中的数值计算与程序设计 ............................. - 7 - 实验三MATLAB图形系统 ......................................................... - 9 -

基础型实验 实验一 MATLAB 集成环境使用与基本操作命令练习 一 实验目的 熟悉MATLAB 语言编程环境;熟悉MATLAB 语言命令 二 实验仪器和设备 装有MATLAB7.0以上计算机一台 三 实验原理 MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各种矩阵的运算与操作,并有较强的绘图功能。 1.1 基本规则 1.1.1 一般MATLAB 命令格式为 [输出参数1,输出参数2,……]=(命令名)(输入参数1,输入参数2,……) 输出参数用方括号,输入参数用圆括号如果输出参数只有一个可不使用 括号。 1.1.2 %后面的任意内容都将被忽略,而不作为命令执行,一般用于为代码加注 释。 1.1.3 可用↑、↓键来重现已输入的数据或命令。用←、→键来移动光标进行修改。 1.1.4 所有MATLAB 命令都用小写字母。大写字母和小写字母分别表示不同的 变量。 1.1.5 常用预定义变量,如pi 、Inf 、NaN 、ans 1.1.6 矩阵的输入要一行一行的进行,每行各元素用空格或“,”分开,每行用 “;”分开。如 ?? ?? ? ?????=987654321A MATLAB 书写格式为A=[1 2 3 ;4 5 6 ;7 8 9] 在MATLAB 中运行如下程序可得到A 矩阵 a=[1 2 3;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 1.1.7 需要显示命令的计算结果时,则语句后面不加“;”号,否则要加“;”号。

matlab电子教案

第二章Matlab 初步(12课时) 一、初等运算和初等函数(0.5课时) 1、简单指令:(P5/6) 例1.算术运算 a=2^2+(12+2*(7-4))/3^2-2^(1/2) %注意算术运算的运算符 例2. 简单矩阵???? ??????=987654321A 的 输入。 A = [1,2,3; 4,5,6; 7,8,9] A = [1 2 3; 4 5 6; 7 8 9] A=[1,2,3 4,5,6 7,8,9] %分行输入 例3.指令的续行输入 S=1–1/2+1/3–1/4+1/5–1/6+1/7 … -1/8 2、数值、变量和表达式 (1)数值的记述 MATLAB 的数值采用习惯的十进制(或科学计数法)表示,可以带小数点或负号。 (2)变量命名规则 变量名、函数名是对字母大小写敏感的。 变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。 (3)MATLAB 默认的预定义变量:(P7/8)

3、有关复数的函数:(P8/9) real(a) %给出复数a 的实部 imag(a) %给出复数a 的虚部 abs(a) %给出复数a 的模 angle(a) %以弧度为单位给出复数a 的相位角 例4.复数的运算——表达复数i e z i z i z 63212,21,43π =+=+=,及计算 321z z z z =。 z1=3+4i %经典教科书的直角坐标表示法 z2=1+2*i %运算符构成的直角坐标表示法 z3=2*exp(i*pi/6) %运算符构成的极坐标表示法 z=z1*z2/z3 例5.复数矩阵的生成与计算(P15/10) A=[1,3;2,4]-[5,8;6,9]*i B=[1+5i,2+6i;3+8*i,4+9*i] C=A*B 例6.求复数矩阵的实部、虚部、模和相角(接例5) C_real=real(C) C_imag=imag(C) C_magnitude=abs(C) C_phase=angle(C)*180/pi 例7.复数的运算 ——计算-8的3次方根 (P10/11) (1) 直接计算时,得到的是处于第一象限的方根 a=-8; r=a^(1/3) (2) 全部方根的计算 % 先构造一个多项式a r r p -=3)( p=[1,0,0,-a]; %p 是多项式)(r p 的系数向量 %指令末尾的“英文状态分号”使该指令运行后,不显示结果。 R=roots(p) %求多项式的根 问题1:rrr 给出-8的3个3次方根,如何求一个数的n 次方根? (3)图形表示 MR=abs(R(1)); %计算复根的模

自控实验指导书--MATLAB--2013

自动控制原理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 1110111 其中分子分母多项式中的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)模型的连接

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