实验六Matlab软件的绘图功能
学号:姓名:评分:一、实验目的:了解Matlab的图形窗口、掌握MA TLAB基本二维图形和三维图形绘制及图形的基本操作,掌握特殊图形的绘制、图形的注释等。
二、实验要求
1.预习Matlab二维图形和三维图形绘制及图形的基本操作,掌握特殊图形的绘制、图形
的注释;
2.在Matlab命令窗口内完成下面的实验内容;
3.整理并上交实验报告(实验目的→问题→算法与编程→计算结果或图形→心得体会)。
三、实验内容与步骤
1.在MATLAB中进行数据可视化的过程主要有如下步骤:
(1) 准备需要绘制在MATLAB图形窗体中的数据。
(2) 创建图形窗体,并且选择绘制数据的区域。一个MATLAB图形窗体可以包含
多个绘图区域。
(3) 绘制图形或者曲线。
(4) 设置曲线的属性,例如线型、线宽等。
(5) 设置绘图区域的属性,并且添加数据网格线。
(6) 为绘制的图形添加标题、轴标签或者标注文本等。
(7) 保存、打印或者导出图形。
2.基本绘图指令:
绘制一条二维曲线:
plot(xdata,ydata,'color_linestyle_marker')
绘制多条二维曲线:
plot(xdata1,ydata1, 'clm1',xdata2,ydata2, 'clm2',…)
绘制多条三维曲线:
plot3(xdata,ydata,zdata,'clm',…)
绘制三维的线框图
mesh(X,Y,Z)
绘制三维的着色图
surf(X,Y,Z)
上机练习1. 在命令窗口内运行下列命令,并观察绘出的图形:
(1)x = 0:pi/1000:2*pi;
y = sin(2*x+pi/4);
plot(x,y)
(2)plot(x,y,x,y+1,x,y+2)
(3)A = pascal(5)
plot(A)
(4)z = 0:0.1:40;
x = cos(z);
y = sin(z);
plot3(x,y,z)
(5)[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
subplot(2,2,1);
mesh(X,Y ,Z);
subplot(2,2,2);
meshc(X,Y ,Z);
subplot(2,2,3);
meshz(X,Y ,Z);
subplot(2,2,4);
surf(X,Y,Z); 上机练习2. (1)编写程序,该程序在同一窗口中绘制函数在 []0,2π之间的正弦曲线和余
弦曲线,步长为 /10π,线宽为 4 个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置
为红色虚线,两条曲线交点处,用红色星号标记。
参考程序代码:
x=0:pi/10:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'b-',x,z,'r:','linewidth',4);
hold on
x0=[pi/4,5*pi/4];
plot(x0,sin(x0),'r*','markersize',10)
hold off
(2)绘制下列图像
(i )sin y x x =,010x π<<
(ii )三维曲线:22,6210
z xy x y x y = ??++++=?,1010x -<<,1010y -<< 提示:转化为参数方程,3(3cos ),3(1sin ),6x t y t z xy =-+ =-+ =
(iii )双曲抛物面:22
164
x y z =-,1616x -<<,44y -<<
(iv )三维曲面:226621z x xy y x y =++++-,1010x -<<,1010y -<<
3. 使用子图
subplot(m,n,p)
其中,m 和n 为将图形窗体分割成的行数和列数,p 为选定的窗体区域的序号,以行元
素优先顺序排列。
上机练习3. 使用子图——创建脚本文件subplotex.m
观察subplotex.m 运行结果
%子图的使用示例
x = 0:.1:2*pi;
%创建新的图形窗体
figure(1);clf;
%分隔窗体为2行2列,分别在不同的区域绘图
subplot(2,2,1);plot(1:10);grid on;
subplot(2,2,2);plot(x,sin(x));grid on;
subplot(2,2,3);plot(x,exp(-x),'r');grid on;
subplot(2,2,4);plot(peaks);grid on;
%子图的特别使用方法
%创建新的图形窗体
figure(2);clf
%图形窗体分割为4行5列,选择第2~4号区域
subplot(4,5,2:4);plot(1:10);grid on;
%选择向量中指定的区域
subplot(4,5,[7 8 9 12 13 14]);plot(peaks);grid on;
%选择单一的区域
subplot(4,5,11);plot(membrane);grid on;
%选择多个区域
subplot(4,5,16:20);surf(membrane);grid on;
在MA TLAB 命令行窗体中键入指令:
subplotex
4. 控制绘图区域
MATLAB 的绘图区域是指图形窗体中的轴(Axes),控制图轴有两个函数可以使用,一
个是axes 函数,另外一个是axis 函数。
axis([xmin xmax ymin ymax])
其中,xmin 和xmax 决定X 轴的显示范围,ymin 和ymax 决定Y 轴的显示范围。
axes('position', RECT)
在特殊的位置显示一个绘图区域并返回其句柄,其中RECT = [left, bottom, width, height] 控
制绘图区域的相对于图形窗体的位置和大小,图图形窗体左下角坐标为(0,0)且右上角坐标为
(1.0,1.0) 。
设置轴的坐标间隔——通过设置轴的XTick 或者YTick 属性来分别设置X 轴或者Y 轴
的坐标间隔。
上机练习4. (1)在MATLAB 命令行窗体中键入下面的指令, 观察绘出的图形:
x = 0:pi/100:pi/2;
y = tan(x);
plot(x,y,'ko')
grid on
axis([0,pi/2,0,5])
(2)使用axes函数,创建脚本文件axestest.m
观察运行axestest.m的结果:
function axestest
%%Axes Test
axes('position',[.1 .1 .8 .25]);
mesh(peaks(20));
grid on;
axes('position',[.1 .4 .4 .25]);
surf(peaks(20));
grid on;
axes('position',[.55 .4 .4 .5]);
surf(membrane);
grid on;
axes('position',[.1 .7 .4 .25]);
plot(peaks(20));
grid on;
在MA TLAB命令行窗体中键入指令:
>> axestest
(3)在MATLAB命令行窗体中键入下面的指令并观察每步绘出的图形:x = -pi:pi/10:pi;
y = cos(x);
plot(x,y,'-r^');
grid on
axis([-pi,pi,-inf,inf])
set(gca,'XTick',-pi:pi/4:pi)
label = {'-pi','','-pi/2','','0','','pi/2','','pi'}
set(gca,'XTickLabel',label)
5.增加文本信息
MATLAB图形窗体的文本信息主要包括图形标题、文本注释、轴标签和图例等。(1)添加标题(Title)
title(…string?)
其中,字符串string为图形窗体的标题
(2)添加图例(Legend)
legend(…string1?, …string2?…)
其中,字符串string1、string2为图例的说明性文本
(3)添加坐标轴标签(Label)
xlabel(…string1?); ylabel(…string2?); zlabel(…string3?); 其中string1就是坐标轴x的标签, string2就是坐标轴y的标签, string3就是坐标轴z的标签。
(4)添加文本注释(text)
text(x,y,'string')
其中,x和y是文本注释添加的坐标值,该坐标值使用当前轴系的单位设置,这个坐标也就是文本起始点的坐标。
上机练习5. 添加格式化的文本信息——创建一个脚本文件txtinfo.m
观察运行txtinfo.m的结果
%使用不同的文本标注属性
%准备数据并绘制曲线
x = 0:.1:2*pi;y = sin(x);plot(x,y)
grid on;hold on
plot(x,exp(-x),'r:*');
%添加标注
title('2-D Plots','FontName','Arial','FontSize',16)
%使用中文字体
xlabel('时间','FontName','隶书','FontSize',16)
%加粗文本
ylabel('Sin(t)','FontWeight','Bold')
%修改字号
text(pi/3,sin(pi/3), '<--Sin(\pi/3)','FontSize',12)
legend('Sine Wave', 'Decaying Exponential')
hold off
执行脚本文件txtinfo,在MATLAB命令行窗体中键入下面的指令:
>> clear all
>> txtinfo
6.特殊字符标注
在MA TLAB图形窗体的所有文本标注中都可以使用Tex字符集,使用特殊文本时一定要注意不要忘记“\”符号,否则MATLAB就会按照普通文本处理这些字符。
\bf:加粗字体。
\it:斜体字。
\sl:斜体字(很少使用)。
\rm:正常字体。
\fontname{fontname}:定义使用特殊的字体名称。
\fontsize{fontsize}:定义使用特殊的字体大小,单位为FontUnits。
其中,设置字体的大小或者名称将直接影响接在定义符后面的文本内容,直到下一个字体定义符出现。
进行上标或者下标文本的注释需要使用“_”和“^”字符。
进行上标标注的方法如下:
^{superstring}
其中,superstring是上标的内容,它必须在大括号“{}”之中。
进行下标标注时的标注方法如下:
_{substring}
其中,substring是下标的内容,它必须在大括号“{}”之中。
上机练习6. 使用特殊文本标注——tex_examp.m
观察运行tex_examp.m的结果
function tex_examp
%TEX_EXAMP 在文本注释中使用特殊文本
alpha = -0.5;
beta = 3;
A = 50;
t = 0:.01:10;
y = A*exp(alpha*t).*sin(beta*t);
%绘制曲线
plot(t,y);
%添加特殊文本注释
title('\fontname{隶书}\fontsize{16}{隶书} \fontname{Impact}{Impact}')
xlabel('^{上标} and _{下标}')
ylabel('Some \bf 粗体\rm and some \it{斜体}')
txt = {'y = {\itAe}^{\alphax}sin(\beta\itt)',...
['\itA\rm' ,' = ',num2str(A)],...
['\alpha = ',num2str(alpha)],...
['\beta = ',num2str(beta)]};
text(2,22,txt );
在MA TLAB 命令行窗体中键入指令:
>> tex_examp
综合练习:在同一平面中的两个窗口分别画出双曲线族22,1,2,4,8y k k x -==和马鞍面
z xy =.
要求:
1)在图形上加格栅、图例和标注
2)定制坐标
3)以不同角度观察马鞍面
7. 绘制特殊图形
在MA TLAB 中能够绘制的特殊图形包括条状图和面积图、饼图、柱状图、离散数据图、
矢量方向图以及等高线图等。
bar :绘制二维条状图,将m 行n 列的矩阵绘制成m 组,每组n 个垂直条(bar)。
barh :绘制二维水平条状图,将m 行n 列的矩阵绘制成m 组,每组n 个水平条(bar)。
bar3:绘制三维条状图,将m 行n 列的矩阵绘制成m 组,每组n 个垂直条(bar)。
barh3:绘制三维水平条状图,将m 行n 列的矩阵绘制成m 组,每组n 个水平条(bar)。
area :绘制面积图,将向量数据绘制成面积图。
hist :在普通的直角坐标下绘制直方图,用来显示数据的分布情况
rose :在极坐标下绘制直方图,用来显示数据的分布情况
stem :绘制二维火柴杆图
stem3:绘制三维火柴杆图
compass :绘制放射线图。
feather :绘制线性放射线图。
quiver :绘制场图。
quiver3:绘制三维场图。
contour :绘制等高线轮廓图。
contour3:绘制三维等高线轮廓图。
contourf :绘制填充的等高线图。 clabel :等高线标签。
sphere: 绘制三维球面
cylinder: 绘制三维圆柱体
上机练习7. 绘制下列图像
(1)绘制电脑磁盘使用情况的饼状图
(2)生成 100 个从 0 到 10 之间的随机整数,绘制其直方图
(3)生成 10个从 0 到 10 之间的随机整数,绘制其阶跃图
(4)以不同的视角观察球面2221x y z ++=和圆柱面22x y x +=所围区域。
8. 图形的编辑模式
可以直接在图形窗体下向图形窗体中的对象添加文本、箭头、直线等,同时还可以利用
MATLAB 提供的编辑工具完成图形对象的编辑工作。
利用如下的方法进入图形编辑模式:
执行图形窗体中Tools 菜单下的Edit Plot 命令。
单击图形窗体工具栏中选择对象按钮。
执行Edit 菜单下的菜单命令或者Insert 菜单下的菜单命令都可以进入编辑模式。
在MA TLAB 命令行窗体中键入plotedit 指令。
上机练习8. 通过界面交互方式在上机练习2 题生成的图形中添加注释,至少应包括:标题,
文本注释,图例。
四、拓展实验
绘制山区地貌图。要在某山区方圆大约27km2范围内修建一条公路,从山脚出发经过一个
居民区,再到达一个矿区.横向纵向分别每隔400m 测量一次,得到一些地点的高程:(平面
区域0≤x ≤ 5600,0≤y ≤4800),需作出该山区的地貌图和等高线图.
提示:为绘出更精确的图形,需要先进行二维插值,再绘图
MATLAB画图入门篇--各种基本图形绘制的函数与实例【来自网络】 一.二维图形(Two dimensional plotting) 1.基本绘图函数(Basic plotting function):Plot,semilogx,semilogy,loglog,polar,plotyy (1).单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。 例1:单矢量绘图 y=[00.62.358.311.71517.719.420];plot(y) 可以在图形中加标注和网格, 例2:给例1的图形加网格和标注。 y=[00.62.358.311.71517.719.420];plot(y) title('简单绘图举例');xlabel('单元下标');ylabel('给定的矢量');grid (2).双矢量绘图(Double vector plotting):如x和y是同样长度的矢量,plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4*pi;y=sin(x);plot(x,y) (3).对数坐标绘图(ploting in logarithm coordinate):x轴对数semilogx,y轴对数semilogy,双对数loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=[00.62.358.311.71517.719.420]; subplot(2,2,1);plot(y);subplot(2,2,2);semilogx(y) subplot(2,2,3);semilogy(y);subplot(2,2,4);loglog(y) (4)极坐标绘图(Plotting in polar coordinate): polar(theta,rho)theta—角度,rho—半径 例:建立简单的极坐标图形。 t=0:.01:2*pi;polar(t,sin(2*t).*cos(2*t)) 2.多重曲线绘图(Multiple curve plotting) (1)一组变量绘图(A group variable plotting) plot(x,y) (a)x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。 例1: x=0:pi/50:2*pi;y(1,:)=sin(x);y(2,:)=0.6*sin(x);y(3,:)=0.3*sin(x);plot(x,y) (b)x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。。 例2: x(1,:)=0:pi/50:2*pi;x(2,:)=pi/4:pi/50:2*pi+pi/4;x(3,:)=pi/2:pi/50:2*pi+pi/2; y=sin(x(1,:));plot(x,y) (c)x和y是同样大小的矩阵时,plot(x,y)绘制y矩阵中各列对应于x各列的图形。 例3: x(:,1)=[0:pi/50:2*pi]';x(:,2)=[pi/4:pi/50:2*pi+pi/4]';x(:,3)=[pi/2:pi/50:2*pi+pi/2]'; y(:,1)=sin(x(:,1));y(:,2)=0.6*sin(x(:,1));y(:,3)=0.3*sin(x(:,1)); plot(x,y) 这里x和y的尺寸都是101×3,所以画出每条都是101点组成的三条曲线。如行列转置后就会画出101条曲线,每条线
本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是 说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x 为m× n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。 例5.1.1 画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 图5.1.1 函数plot 绘制的正弦曲线 在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专 门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可实现它们的功能。 表5.1.1 绘图参数表 色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式 y 黄- 实线. 点< 小于号 m 紫:点线o 圆s 正方形 c 青-. 点划线x 叉号 d 菱形 r 红- - 虚线+ 加号h 六角星 g 绿* 星号p 五角星 b 蓝v 向下三角形 w 白^ 向上三角形 k 黑> 大于号 例如,在上例中输入 >> plot(x,y1,'r+-',x,y2,'k*:')
Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一.二维绘图 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 一.绘制二维曲线的基本函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基本用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。 例51 在[0 , 2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令 >> x=0:pi/100:2*pi; >> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52 绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:>> t=-pi:pi/100:pi; >> x=t.*cos(3*t); >> y=t.*sin(t).*sin(t);
matlab之基本绘图函数 clear:清空内存中的变量; figure:强制生成一个新的个绘图窗口; syms x y t :声明变量; fplot(函数表达式,绘图区间); plot(横坐标向量,纵坐标向量,颜色/线形等参数) ezplot(函数表达式):简单的fplot,easy fplot axis([xmin xmax ymin ymax ...]):设置坐标轴显示范围 求极限 limit: 例:limit(F,x,a,left);对表达式F求极限,变量为x,从左边趋近a。 inf:正无穷; -inf:负无穷。 - 作者:博客论坛成员2005年04月5日, 星期二14:13回复(0)|引用(0)加入博采求解线形方程 solve,linsolve 例: A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1]; %矩阵的行之间用分号隔开,元素之间用逗号或空格 B=[3;1;1;0] X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B) diff(fun,var,n):对表达式fun中的变量var求n阶导数。 例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式
diff(F); %matlab区分大小写 pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式 非线性方程求解 fsolve(fun,x0,options) 其中fun为待解方程或方程组的文件名; x0位求解方程的初始向量或矩阵; option为设置命令参数 建立文件fun.m: function y=fun(x) y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ... x(2) - 0.5*cos(x(1))+0.3*sin(x(2))]; >>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve')) 注: ...为续行符 m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。 不定积分与定积分 不定积分:int(fun,var) 例:求∫sinaxsinbxsincxdx syms a b c x y=sin(a*x)*sin(b*x)*sin(c*x); int(y,x); pretty(ans) 定积分:int(fun,var,a,b) 其中a,b分别为上下限
matlab入门之绘图 一.二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plot, semilogx, semilogy, loglog, polar, plotyy (1). 单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。例1:单矢量绘图 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) 可以在图形中加标注和网格, 例2:给例1 的图形加网格和标注。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) title('简单绘图举例'); xlabel('单元下标'); ylabel('给定的矢量'); grid (2). 双矢量绘图(Double vector plotting):如x和y是同样长度的矢量, plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4*pi; y=sin(x); plot(x,y) (3). 对数坐标绘图(ploting in logarithm coordinate):x轴对数semilogx, y轴对数semilogy, 双对数loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; subplot(2,2,1); plot(y); subplot(2,2,2); semilogx(y) subplot(2,2,3); semilogy(y); subplot(2,2,4); loglog(y) (4)极坐标绘图( Plotting in polar coordinate): polar(theta,rho) theta—角度,rho—半径 例:建立简单的极坐标图形。 t=0:.01:2*pi; polar(t,sin(2*t).*cos(2*t)) 2. 多重曲线绘图(Multiple curve plotting) (1)一组变量绘图(A group variable plotting) plot(x,y) (a) x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。 例1: x=0:pi/50:2*pi; y(1,: )=sin(x); y(2,:) =0.6*sin(x); y(3, :)=0.3*sin(x); plot(x,y) (b) x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。。 例2: x(1,: )=0:pi/50:2*pi; x(2,: )=pi/4:pi/50:2*pi+pi/4; x(3,: )=pi/2:pi/50:2*pi+pi/2; y=sin(x(1,: )); plot(x,y) (c) x和y是同样大小的矩阵时, plot(x,y)绘制y矩阵中各列对应于x各列的图形。 例3: x(:,1 )=[0:pi/50:2*pi]'; x(:,2 )=[pi/4:pi/50:2*pi+pi/4]'; x(:,3 )=[pi/2:pi/50:2*pi+pi/2]'; y(:,1 )=sin(x(:,1 )); y(:,2 )=0.6*sin(x(:,1)); y(:,3 )=0.3*sin(x(:,1)); plot(x,y)