上机材料二MATLAB语言绘图程序设计 2Word格式.docx
《上机材料二MATLAB语言绘图程序设计 2Word格式.docx》由会员分享,可在线阅读,更多相关《上机材料二MATLAB语言绘图程序设计 2Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
![上机材料二MATLAB语言绘图程序设计 2Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/28/beba0b31-e51e-4fa6-8288-a77451434a80/beba0b31-e51e-4fa6-8288-a77451434a801.gif)
fun'
[a,b])作出函数fun在区间[a,b]上的函数图;
plot3(x,y,z)空间曲线图,其中x,y,z为同长度的向量.
»
plot([1425],[13-12])
plot([1425],[13-12],1:
3,[2103])%注意颜色
图形可直接保存为M文件,也可利用图形窗口菜单Edit/Copyfigure作为图片剪贴到Word或其他应用程序中。
图形的线型,标记,颜色均可设定。
常用的有
颜色
线型
标记
b蓝(默认)
-实线(默认)
无标记(默认)
g绿
--虚线
*星
r红
:
粗点线
.点
y黄
-.点划线
o圈
m洋红
x叉
c青
+十字
w白
s方块
k黑
d菱形
v下三角形
^上三角形
<
左三角形
>
右三角形
h六角形
p五角形
例一元函数图y=x3-x-1和y=sin(5x),-1<
x<
2
x.^3-x-1'
[-1,2]);
holdon;
%在作下一幅图时保留已有图象
x=-1:
0.2:
2;
y=sin(5*x);
plot(x,y,'
ro'
);
holdoff;
%释放holdon
2曲面图
[x,y]=meshgrid(xa,ya)当xa,ya分别为m维和n维行向量,得到x和y均为n行m列矩阵。
meshgrid常用于生成X-Y平面上的网格数据。
mesh(x,y,z)绘制网格图,是最基本的曲面图形命令,其中x,y,z是同阶矩阵,表示曲面三维数据。
mesh(xa,ya,z)xa,ya分别为m维和n维向量,z均为n行m列矩阵。
等价于
先[x,y]=meshgrid(xa,ya)再mesh(x,y,z)。
surf(x,y,z)绘制网面图,与mesh用法类似。
contour(x,y,z)绘制等高线图,与mesh用法类似,可指定z的范围。
contour3(x,y,z)绘制三维等高线图,与mesh用法类似,可指定z的范围。
例如
xa=1:
3;
ya=1:
4;
[x,y]=meshgrid(xa,ya);
z=x+y;
mesh(x,y,z)
[x,y,z]
123111234
123222345
123333456
123444567
这3组数据构成网面的12的格点坐标。
例二元函数图z=x*exp(-x2-y2)
clear;
close;
%close关闭所有图形窗口
xa=-2:
.2:
ya=xa;
z=x.*exp(-x.^2-y.^2);
mesh(x,y,z);
%网格图
surf(x,y,z);
%网面图
contour(x,y,z);
%等高线图
contour3(x,y,z);
%三维等高线图
3.说明、格栅和图例
图5
Title('
字符串'
)图形标题说明
xlabel,ylabel,zlabel用法类似于title,分别说明坐标轴x,y,z。
Text(x,y,'
)将字符串表达的文字标于(x,y)处.
Lengend('
字符串1'
'
字符串2'
...)依次说明图例
gridon/gridoff显示/不显示格栅
例参变量函数
t=0:
0.1:
20;
r=exp(-0.2*t);
th=0.5*pi*t;
x=r.*cos(th);
y=r.*sin(th);
z=t;
plot3(x,y,z);
text(x
(1),y
(1),z
(1),'
START'
)
n=length(x);
text(x(n),y(n),z(n),'
END'
title(‘SPACELINE’)
xlabel('
X'
ylabel('
Y'
zlabel('
Z'
legend('
ConeLine'
gridon;
%再试一试gridoff,观察变化
4、图形控制
Holdon/holdoff保留/释放现有图形
axisoff/on不显示/显示坐标轴
axis([a,b,c,d])定制2维坐标轴范围a<
b,c<
y<
d
axis([a,b,c,d,e,f])定制3维坐标轴范围a<
d,e<
z<
f
view(az,el)调整视角,az为角度,el为高度(默认az=-37.5,el=30)
figure开一个新图形窗口
close关闭现有图形窗口
subplot(m,n,k)将图形窗口分为m*n个子图,并指向第k幅图
5.图形对象设置
MATLAB图形窗口、坐标轴、图形元素等往往是系统自动选定的,有些可用图形命令来改变,如曲线的颜色、标题文本、视点等。
一般可使用对象设置命令set来设置,如文本的字体,坐标轴刻度,窗口的背景色等,但用法较复杂。
MATLAB的图形窗口建立了图形对象编辑工具,可直接改变图形设置。
作为示例,我们现在来设法将例3产生的图形改变成下列样子。
(1)按工具栏Editplot按钮(指向左上方的箭头),使图形处于编辑状态;
(2)曲线粗细和颜色:
选中曲线,用菜单Edit/CurrentObjectProperties...设置(或用鼠标双击可编辑),将颜色改为红色,粗细改为3;
(3)字体大小:
选中所要编辑的文字,用菜单Edit/CurrentObjectProperties...设置;
(4)坐标轴:
选中并双击坐标轴,将y轴方向设为“reverse”;
(5)再按工具栏Editplot按钮,使图形回到正常状态;
(6)调整视角:
按工具栏Rotate3D按钮(带箭头的圆圈),选中坐标轴,调整为理想角度;
(7)加箭头线:
按工具栏InsertArrow按钮(指向左上方的箭头),从原点拉出三根坐标线,并双击编辑加粗;
(8)加文本:
按工具栏InsertText按钮(字母A),在适当位置写X,Y,Z,设置字体和大小;
(9)用命令axisoff使原坐标轴不显示。
但图形窗口对象编辑工具并没有给出所有设置,更详细的设置可用菜单Edit/...property完成。
七、程序设计
1、控制流
到目前为止,我们用的命令都是顺序结构的,对于复杂的计算,需要循环和分支结构。
例计算s=
s=0;
forn=1:
100
s=s+1/n/n;
end
s
s=
1.6350
常用控制流语句有
for循环变量=初值:
增量:
终值,语句;
while(条件式),语句;
if(条件式),语句;
end
if(条件式1),语句1;
elseif(条件式2),语句2;
……;
else,语句;
end
switch(分支变量)case(值1),语句1;
case(值2),语句2;
……;
otherwise语句;
另外还有break(中断循环),return(中断执行返回)等。
2、M脚本文件
从工具栏的NewFile按钮或在File/New菜单选M-file就进入MATLAB的编辑器Editer,用以编写用户的M文件。
M文件可分为两类:
M脚本文件和M函数文件。
将多条MATLAB语句写在编辑器中保存在适当的目录中(这个目录须在MATLAB搜索路径中),就得到一个M脚本。
如我们将下面几条语句写在编辑器中,
保存为eg0_4(不要加扩展名m),然后在命令窗口执行
eg0_4
使用编辑器也可打开和修改M文件,观察变量值,调试程序等。
但要注意:
每次修改程序后都要存盘。
3、函数文件
M函数文件以function开头,格式为
function输出变量=函数名(输入变量)
语句;
在MATLAB中,使用M函数是以该函数的磁盘文件主名调用,而不是function中的函数名,但我们建议二者用同名。
M函数与M脚本有两个重要区别:
第一,M函数一般有输入输出变量;
第二,M函数中所有变量为局部变量,而脚本文件中所有变量都存在于命令窗口,即全程变量。
例如,写函数文件
M函数eg0_4f.m
functions=f(m)
m
保存为eg0_4f.m,在命令窗口执行
clear;
eg0_4f(100),eg0_4f(1000)
ans=
1.6439
s
?
Undefinedfunctionorvariables.%说明s不是命令窗口的变量
*4、编程几点高级事项
input提示输入
disp强行显示
num2str数值转字符串
str2num字符串转数值
int2str整数转字符串
mat2str矩阵转字符串
char按ASCII码转换
strcmp字符串比较
eval执行命令
feval执行函数
keyboard键盘指令
pause延时
warning显示警告
error显示错误并中断
nargin函数的输入变量个数
nargout输出变量个
(1)注释:
注释语句注释用%开头,对本行后面字符起作用,注释语句不参与运算,起说明作用,增强程序的可读性,一个好的M文件开头应有一段注释,说明功能和使用方法,这部分注释使用
help文件主名
可看到。
注释符%也常用于程序调试。
(2)提示输入:
input和disp是一组输入输出语句,例如编写下列脚本文件finddet.m,使对键盘输入的方阵求得行列式。
文件finddet.m
clearA;
A=input('
Enterasquarematrix:
'
d=det(A);
disp(['
Itsdeterminantis'
num2str(d)]);
这里num2str是将数转换为字符串。
现在运行
finddet
(请你输入方阵,如[12;
34])
Itsdeterminantis–2
(