matlab第八讲教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西南科技大学本科生课程备课教案
计算机技术在安全工程中的应用
---- 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 In put case 1
disp('Mo nday')
case 2
disp('Tuesday')
case 3
disp('Wed nesday')
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
3)用 for 循环结构求矢量元素的和,已知矢量 x 等于
x=[1 23 43 72 87 56 98 33]
用函数 sum 检查计算结果,并用 while 重写一遍程序。

(4)用函数 primes 求小于 100 的素数,用 for 循环计算相邻两个素数的乘积。

例如,前 4 个素数是
2 3 5 7 计算 2*3 3*5 5*7 输出 6 15 35 x=primes(100); for k=1:length(x) if k+1<length(x)
a=x(k)*x(k+1); b(k)=a; else
break end end disp(b)
引言 大规模的数据表格很难直观表现信息内容,而工程师利用图形化
技术可以使信息更加容易理解。

图形 化技术可以直观地反映出数据的变化趋势、最大值和最小值,也可以非常容易地检查出因计算或测量引起 的错误数据点。

而且,图形化数据可以让人迅速准确地判断所编写的程序是否能够得出正确的结果。

(1)二
维图形

基本绘图命令
在工程中最常用的图形是 x-y 坐标图。

x-y 坐标图就是用一系列有序数据标识出的二维坐标平面上的 点,然后把这些点用直线连起来就构成二维图形。

通过测量或计算得到 x 和 y 的坐标值,一般情况下,自 变量 x 的值描绘在 x 轴上,因变量 y 的值描绘在 y 轴上。

%%绘第一张图 x=0:0.2:2*pi; y=sin(x); plot(x,y) %绘制二维图形
%%加修饰
title( ' 绘制二维图形 ' ); %添加标题
xlabel( ' 自变量 x' );ylabel( ' 因变量 y' ); %添加坐标轴标识 %% 加栅格
grid %添加栅格, grid on/grid off
x=[1 23 43 72 87 56 98 33]; a=0;
for k=1:length(x)
a=a+x(k); end if a==sum(x)
disp(a) else
disp('error') end
x=[1 23 43 72 87 56 98 33];
a=0; k=1;
while k<=length(x)
a=a+x(k); k=k+1;
end if a==sum(x)
disp(a) else
disp('error' ) end
hold on %hold/hold on 保持住当前图形, hold off 覆盖当前图形
pause(10) %%绘第二张图 y1=cos(x) plot(x,y1, '--o') %%继续修饰 axis([0,2*pi,-1.2,1.2]) %设定坐标轴的范围 legend( 'sin(x)' , 'cos(x)' ) %添加图例
gtext( 'sinx' ); %添加文本框 gtext( 'cosx' );
%添加文本框
蛉制二维图形


描 述 运 用
plot 创建一个x-y 坐标图
plot(x,y) title 添加标题 title (' my graph ') xlabel 添加x 轴坐标 xlabel ('坐标轴名称') ylabel 添加y 轴坐标 ylabel ('坐标轴名称’) grid 添加栅格 grid on 添加栅格/grid off 取消栅格 hold
定义当前图形
hold on 保持当前图形/hold off 覆
盖当前图形
pause
暂停程序,观察图形
pause 暂停程序,按任意键继续 pause(n)
继续执行前中止执行程 序n 秒
axis 如果没有输入参数,就将坐标轴固定在当前配置状态。

再次输入 axis
就是恢复对坐标轴的控制
axis(v) axis 的输入参数是一个四维矢量,分别定义了 x 轴和y 轴的最小值和最 大值,例如: [xmi n,xmax,ymi n,y max]
lege nd legend( string1 ','string2',etc),添加图例,对不同曲线加以说明 text text(x coordinate,y coordinate, string ),输入参数为文本框的位置和内容
gtext
gtext ( string ),添加文本框,框的位置由鼠标操作来确疋
3 4 5 6
自变量汎
□ 1
8 6 J 2 0 2 n- n- nu O.-
□.
4
8
6 -0
注意:添加标题和坐标轴标注前要先创建图形,否则绘图命令会删除前面已经设置的标注。

命令xlabel、ylabel和title 中的字符串一般用单引号结束。

在matlab中也可以使用撇号(如it ' s)。

输入两个单引号中间可以用撇号隔开,但不能使用双引号。

②绘制多条曲线
编程过程中经常需要绘制完图形后继续进行计算,然后又绘制图形。

Matlab可以随时生成和显示图形
窗口,但生成的第二幅图会覆盖掉第一幅图形。

怎么办?
用figure创建新的图形。

使用figure重新打开一个新的图形窗口,并在窗口中绘制图形。

figure (n)
例如输入figure(2),会出现一个新的图形窗口,可以在此窗口绘制下一个图形。

使用plot与hold on相结合
用plot,plot输入x矢量和y矢量分别绘制曲线
plot(x1,y1,x2,y2)
如果函数plot的输入参数是一个单独的矩阵,则Matlab对矩阵的每一列单独绘图。

矩阵的行下标矢量
作为x轴坐标,每列所对应的数值作为y轴坐标绘制曲线。

如果plot有两个自变量,一个是矢量,一个是
矩阵,那么,matlab按行依次绘制图形。

x=0:pi/100:2*pi;
y1=cos(x)*2;
y2=cos(x)*3;
y3=cos(x)*4;
y4=cos(x)*5;
z=[y1;y2;y3;y4];
plot(x,y1,x,y2,x,y3,x,y4);
figure(2)
plot(x,z)
③线条、颜色和标记的风格
用户可以选择实线、虚线、点和点画线作为绘图线,选择加号、星形、圆圈等形状作为标记。

此外还可以选择不同的绘图颜色。

x=0:0.2:2*pi;
y=sin (x);
plot(x,y, '--or')
清除图形用clf,关闭图形窗口用close命令。

④子图
使用subplot命令可以把图形窗口分成m行n列的多个区域。

函数
subplot ( m,n,p)
把图形窗口分成m x n个小窗口,在第p个小窗口绘制下一个图形窗口按从左到右,从上到下的顺序编号。

x=0:pi/100:2*pi;
subplot(2,1,1)
plot(x,si n(x));
subplot(2,1,2)
plot(x,cos(x))
⑤极坐标图
在Matlab中可以绘制极坐标图。

polar(theta,r)
根据输入角度(一般用弧度表示)和半径r绘制极坐标图
x=0:pi/100:pi;
y=s in (x);
polar(x,y)
练习
1. 定义数组theta,范围从0到2*pi,步长为0.04*pi。

定义半径数组r=5*cos(4*theta)。

根据theta和r
的值绘制极坐标图。

theta=0:pi/100:2*pi;
r=5*cos(4*theta);
polar(theta,r)
5
2. 数组theta保持不变,根据关系式r=5-5*sin(theta)绘制极坐标图。

theta=0:pi/100:2*pi;
r=5-5*si n( theta);
polar(theta,r)
3. 定义数组theta=pi/2:4/5*pi:
4.8*pi,创建6个元素的全1数组r,根据theta和r绘制极坐标图。

theta=pi/2:4/5*pi:4.8*pi; r=on es(1,6);
polar(theta,r)
⑥条形图和饼图
bar(x) 若x矢量,则绘制垂直条形图;若x为二维矩阵,则按行分组显示
barh(x) 若x矢量,则绘制水平条形图;若x为二维矩阵,则按行分组显示:
bar3(x) 绘制三维条形图
bar3h(x) 绘制三维水平条形图
x的兀素用饼图中的一部分表示—pie(x) 绘制饼图。

矩阵
pie3(x) 绘制三维饼图。

矩阵x中的兀素用饼图的一部分表示
hist(x) 绘制柱状图
clear,clc
x=[1 2 5 4 8];
y=[x;1:5];
%%垂直条形图
subplot(2,2,1)
bar(x, 'r' ),title( 'A bar graph of vector x' );
%%垂直条形图,输入矩阵
subplot(2,2,2)
bar(y),title( 'A bar graph of matrix y' );
%% 三维条形图
subplot(2,2,3)
bar3(y),title( 'A three-dime nsional bar graph' )
%%饼图
subplot(2,2,4)
pie3(x),title( 'A three-dime nsional pie graph' )
A&ar graph fitter K A &ar 爭mph nf m a Ira: y
⑦柱状图
柱状图是一种主要用于数据统计分析的图形,通过它可以显示出数据的分布情况。

在Matlab中,一般将数据从最大值到最小值之间等分成10份,用柱状图显示。

定义矩阵x是《工程导论》课程的期末考
试成绩。

用柱状图显示结果。

x=[100 95 74 87 22 78 34 35 93 88 86 42 55 48];
hist(x)
⑧双y轴图
在解决实际问题时,有时需要把两个x-y坐标图输出到同一坐标图中。

在这种情况下,如果两个y轴的数据相差很多,就很难看出数据的变化情况。

x=0:pi/20:2*pi;
y1=si n( x);
y2=exp(x);
%%同一个y轴作图
subplot(1,2,1) plot(x,y1,x,y2) gtext( 'sinx' ),gtext( 'exp')
%%双y轴作图
subplot(1,2,2)
plotyy(x,y1,x,y2)
gtext( 'sinx' ),gtext( 'exp')
①三维曲线图
与plot 类似,函数plot3是三维绘图的基本函数,它通过
clear,clc
x=li nspace(0,10*pi,1000); y=cos(x); z=s in( x); %% plot3 绘图 subplot(1,2,1) plot3(x,y,z) grid on
xlabel( 'an gle' ),ylabel( 'cos(x)' ),zlabel( 'si n(x)' ),title( %% comets 图 subplot(1,2,2) comet3(x,y,z)
xlabel( 'an gle' ),ylabel( 'cos(x)' ),zlabel( 'si n(x)' ),title(
x,y,z 三个输入矢量在三维空间绘制曲线图。

'plot3 绘图');
'comet3 绘图');
⑨ 函数绘图
运用函数fplot 可以在不定义x 和y 轴坐标数组的条件下绘制某个函数的图形。

输入代码: fplot( 'si n(x)',卜2*pi,2*pi])
函数fplot 的第一个自变量是字符串表示的绘图函数的名称, 第二个自变量是数组。

如果绘图的函数很
复杂,输入字符串很不方便,则可以定义一个匿名函数,然后直接输入函数的句柄。

下一章将详细介绍匿 名函数和函数句柄的
使用方法。

(2 )三维图形
BUJ

4JJ XU 3D iaa
函数comet3表现三维图形的动画效果,若绘图程序的执行速度很快,则需要较多的数据点。

使用函数comet可以绘制二维图形。

相应的,类似于二维曲线绘制函数,Matlab还提供了其他的三维曲线绘制函
数,女口stem3()可以绘制三维火柴杆形曲线,fill3()可以绘制三维的填充图形,bar3 ()可以绘制三维的直
方图等。

②三维曲面图
曲面图就是把数据绘制成三维曲面,mesh图和surf图是两种常用的曲面图。

Mesh 图
绘制mesh图的方法有很多种。

若函数自变量是一个二维mx n矩阵,则矩阵中元素的数值为z轴坐标, 元素的位置分别是x轴和y轴坐标。

z=[1:10;2:2:20;3:12];
mesh(z)
xlabel( 'x-axis' )
ylabel( 'y-axis' )
zlabel( 'z-axis' )
函数mesh可以有三个自变量:mesh(x,y,z)。

其中,x,y,z分别是x轴、y轴和z轴的坐标。

x=li nspace(1,50,10)
y=li nspace(500,1000,3)
z=[1:10;2:2:20;3:12];
mesh(x,y,z)
xlabel( 'x-axis' )
ylabel( 'y-axis' )
zlabel( 'z-axis' )
surf 图
surf图和mesh图类似,不同之处在于,surf图绘制的是着色的三维曲面图,其颜色由z值决定。

surf的输入参数和mesh相同,可以有一个输入变量也可以有三个输入变量。

surf(z)以z的行列编号作为x
轴和y轴坐标。

mesh也可以有三个自变量:
mesh(x,y,z)。

其中x,y,z分别是x轴、y轴和z轴的坐标。

矢量x的兀素个数必须和矩阵z的列数相冋,矢量y的兀
素个数必须和矩阵z的行数相同。

z=[1:10;2:2:20;3:12];
subplot(1,2,1)
mesh(z)
xlabel( 'x-axis' ),ylabel( 'y-axis' ),zlabel( 'z-axis' ),title( 'mesh 图')
subplot(1,2,2)
surf(z)
xlabel( 'x-axis' ),ylabel( 'y-axis' ),zlabel( 'z-axis' ),title( 'surf 图')
ppg D I-3W5-
Meshgrid的运用
在三维绘图过程中,meshgrid可以将图像网格化。

meshgrid用于从已知数组a和b产生网格。

生成的网格矩阵A和B大小是相同的。

[A,B]=Meshgrid(a,b)
生成size(b)Xsize(a)大小的矩阵A和B。

它相当于a从一行重复增加到size(b)行,把重复增加到size(a)列。

因此命令等效于:
A=on es(size(b))*a;
B=b'* on es(size(a))
应用举例
x=-2:0.2:2;
y=-2:0.2:2;
[X,Y]=meshgrid(x, y);
Z=X.*exp(-X.A2-Y.A2);
surf(X ,Y,Z)
等高图
等高图是根据三维曲面绘制的二维图形。

主要是由con tour命令,画出的仅只有等高线。

出的图既有曲面又有等高线。

x=-2:0.2:2;
y=-2:0.2:2;
[X,Y]=meshgrid(x, y);
Z=X.*exp(-X.A2-Y.A2);
subplot(2,2,1)
mesh(X ,Y, Z);
subplot(2,2,2)
surf(X ,Y,Z)
subplot(2,2,3)
con tour(X,Y,Z)
subplot(2,2,4)
surfc(X ,Y,Z)b转置成一列再
surfc命令画
伪色图
伪色图和等高图类似,不同之处在于伪色图是用带栅格的二维阴影代替等高图中的轮廓线。

根据 Matlab 的实体模型函数 peaks 中的输入参数矩阵 x,y,z 作出伪色图,程序代码如下:
[x,y,z]=peaks; %%作一个伪色图 subplot(2,2,1) pcolor(x,y,z)
%%用颜色渲染功能去掉三维图形的网格 subplot(2,2,2) pcolor(x,y,z) shading in terp
%%利用覆盖等高绘图功能在图形上叠加等高线 subplot(2,2,3) pcolor(x,y,z) shading in terp con tour(x,y,z) %%画原图和等高线 subplot(2,2,4) surfc(x,y,z)
3
2 1 D 1
2 3 - ■ -
-2 -2。

相关文档
最新文档