MATLAB二维绘图

MATLAB二维绘图
MATLAB二维绘图

第2章MA TLAB二维绘图 (2)

2.1 二维绘图基本流程 (2)

2.2 二维图形的基本绘图命令 (4)

2.2.1 高级绘图命令 (4)

2.2.2低级绘图命令 (6)

2.2 二维图形的修饰 (8)

2.2.1 坐标轴的调整 (8)

2.2.1.1 调整坐标轴的范围 (8)

2.2.1.2 调整坐标轴的状态 (9)

2.2.1.3 保存坐标轴的范围 (11)

2.2.1.4 保存坐标轴的状态 (11)

2.2.2画出或取消网格线 (12)

2.2.3设置坐标轴的名称 (12)

2.2.4设置图形标题 (13)

2.2.5在图形中显示文字 (14)

2.2.5.1用坐标轴确定文字位置 (14)

2.2.5.2用鼠标确定位置显示文字 (15)

2.2.6 图形的标定和颜色条 (16)

2.2.7 使用绘图工具栏标注图形 (18)

2.3 填充图形的绘制 (19)

2.4 多坐标系绘图与图形窗口的分割 (20)

2.4.1 图形叠印法 (20)

2.4.2 子图的绘制 (21)

2.5 特殊坐标图形的绘制 (22)

2.5.1 绘制极坐标图形 (23)

2.5.2对数/半对数坐标系绘图 (23)

2.6 特殊二维图形的绘制 (24)

2.4.3 直方图 (24)

2.4.1 柱状图和面积图 (26)

2.4.2 饼图 (28)

2.4.4 离散数据绘图 (28)

2.4.5 等高线图 (30)

2.4.6 向量图 (31)

2.7 函数绘图 (34)

2.7.1 fplot函数 (34)

2.7.2函数function的定义 (35)

2.8 工作空间直接绘图 (36)

2.9 手工绘图方式 (38)

2.10 小结 (41)

第2章MATLAB二维绘图

数据可视化是MATLAB一项重要功能,它所提供的丰富绘图功能,使得从繁琐的绘图细节中脱离出来,而能够专心于最关心的本质。通过数据可视化的方法,工程科研人员可以对自己的样本数据的分布、趋势特性有一个直观的了解。

本章将重点介绍MA TLAB二维图形的绘制方式,并按照完整的步骤来说明一个图形产生的流程,以便将数据以图形形式来识别。

通过本章,读者不仅能掌握二维绘图的基本流程,而且能熟练使用MA TLAB中相应的绘图命令、函数来绘制二维图形。

2.1 二维绘图基本流程

在MA TLAB中绘制图形,通常采用以下7个步骤:

(1)准备数据;

(2)设置当前绘图区;

(3)绘制图形;

(4)设置图形中曲线和标记点格式;

(5)设置坐标轴和网格线属性;

(6)标注图形;

(7)保存和导出图形。

二维图形的绘制,也通过上述7个步骤来完成。下面以实例来说明二维绘图的各个主要步骤。

例2-1 MATLAB中典型的二维图形绘制流程实例。在同一坐标轴上绘制sin(x)、sin(2x)和sin(3x)这三条曲线。

解:在MA TLAB中,通过如表2-1所示的步骤来实现上述图形绘制。

表2-1 基本绘图流程

绘图步骤主要工作

1. 数据准备准备好绘图需要的横坐标变量和纵坐标变量数据

2. 设置当前绘图区在指定的位置创建新的绘图窗口,并自动以此窗口的绘图为当前绘图区

3. 绘图创建坐标轴,指定叠加绘图模式,绘制函数曲线

设置图形中的线宽、线型、颜色和标记点的形状、大小、颜色等。

4. 设置图形中曲线和

标记点格式

将坐标轴的范围设置在指定曲线

5. 设置坐标轴和网格

线属性

6. 标注图形在图形中添加标题、坐标轴标注、文字标注等

7. 保存和导出图形按指定文件格式、属性保存或导出图形

对于此题,在MATLAB编写createfigure函数来实现,createfigure函数的代码如下:%********************************************************

%程序:EX201.M

%功能:作出具有较为完整流程的二维图形

%********************************************************

function createfigure(x1, y1) %创建图形绘制函数

x1=0:0.02*pi:2*pi; % 定义X1的范围及刻度

y1=[sin(x1);sin(2*x1);sin(3*x1)]; %定义Y1的范围及刻度

figure1 = figure('PaperPosition',[0.6345 6.345 20.3 15.23],'PaperSize',[20.98 29.68]);

axes1 = axes('Parent',figure1);

axis(axes1,[0 6.283 -2 2]); %建立坐标轴

title(axes1,'sin(x)/sin(2x)/sin(3x)'); %图形标注

xlabel(axes1,'x');

ylabel(axes1,'y');

box(axes1,'on');

hold(axes1,'all');

plot1 = plot(x1,y1); %显示图形

text1 = text(...

'Position',[1.136 -0.9532 0],...

'String','y=sin(x)',...

'VerticalAlignment','baseline',...

'Parent',axes1); %创立文字标注

text2 = text(...

'Position',[2.266 -0.8947 0],...

'String','y=sin(2x)',...

'VerticalAlignment','baseline',...

'Parent',axes1); %创立文字标注

text3 = text(...

'Position',[3.395 0.8947 0],...

'String','y=sin(3x)',...

'VerticalAlignment','baseline',...

'Parent',axes1); %创立文字标注

运行该程序后,输出如图2-1所示的结果:

图2-1 二维图形绘制输出的结果(例1-1)

在图形的绘制流程中,需要注意的是:

(1)上面所谓的7个步骤的顺序也不是完全固定,尤其是其中对图形进行修饰标注的4、5、6步骤,完全可以改变顺序;

(2)MA TLAB中对于图形中的曲线和标记点格式有默认的设置,这在一般情况下是可以满足使用者需要的,因此对于只是想大概察看一下数据分布的用户,只需要进行第1、3步工作就可以了。

2.2 二维图形的基本绘图命令

MATLAB提供了两种级别的二维图形基本绘图命令:

(1)高级绘图命令plot

它以一体化的方式绘出图形,即用户只须给出图形定义数据,绘图范围、刻度大小等,细节内容都可由系统自动确定。

(2)低级绘图命令line

它允许用户在图形窗口的任意位置用低级绘图命令line画直线或折线。

下面分别进行讲述。

2.2.1高级绘图命令

plot函数是MA TLAB中最核心的二维绘图函数,它有多种语法格式可以实现多种功能。

(1)最简单的用法plot(Y)

当Y是一维数组时,plot(Y)是把(i,X(i))各点顺次连接起来,其中i的取值范围从1到length(X)。

当Y是普通的二维数组时,相当于对Y的每一列进行plot(Y(:,i))画线,并把所有的折线累叠绘制在当前坐标轴下。

(2)最常用的用法plot(X,Y)

plot最常用的语法格式是接受两个参数的plot(X,Y)

当X和Y都是一维数组时,功能和line(X,Y)类似;但plot函数中的X和Y也可以是一般的二维数组,这时候就是对X和Y的对应列画线。

特别的,当X是一个向量,Y是一个在某一方向和X具有相同长度的二维数组时,plot(X,Y)则是对X和Y的每一行(或列)画线。

(3)拓展的用法plot(X1,Y1,X2,Y2,….Xn,Yn)

对多组变量同时进行绘图了,对于每一组变量,其意义同前所述。

例2-2高级绘图函数plot绘图实例。利用plot(x)和多组变量的语法格式绘制y=sinx、y=cosx、y=sin(x-0.1π)、y=cos(x+0.1π)的二维图形。

解:在MA TLAB命令窗口中输入以下命令:

>>x=0:0.4*pi:2*pi;

>>y1=sin(x);

>>y2=cos(x);

>>y3=sin(x-0.1*pi);

>>y4=cos(x+0.1*pi);

>>plot(y1) %如图2-2

>>title('Plot绘图结果')

>>xlabel('x','FontSize',15)

>>ylabel('y','FontSize',8)

运行以上M代码程序,得到图2-2所示的结果图形。

将程序中plot(y1)替换成以下语句,将会得到图2-3所示结果图形。

>>plot(x,y1,x,y2,x,y3,x,y4) %图2-3,注意比较和图2-2的不同

图2-2 plot(y1)画线结果(例2-2)

图2-3 多组数据的plot结果(例2-2)

从图2-3可以看到,多组数据绘图时,MATLAB默认通过不同的颜色区分了各条曲线。实际上,plot函数绘图指令中就可以设置各条曲线的颜色、线型等属性,这时候plot函数对应的语法格式为:

plot(X1,Y1,LineSpec,...),

其中LineSpec就是一个指定曲线颜色、线型等特征的字符串。

plot函数采用plot(X1,Y1,LineSpec,...)的语法格式时,可以通过字符串LineSpec指定曲线的线型、颜色以及数据点的标记类型。这在突出显示原始数据点和个性化区分多组数据的时候是十分有用的。

例如’-.or’就表示连线采用点划线类型,数据点用圆圈标记,颜色都设为红色。需要注意的是,当指定了数据点标记类型,但不指定线型时,则表示只标记数据点,而不进行连线绘图。

MATLAB 默认是用颜色区分多组曲线,但在只能黑白打印或显示的情况下,个性化的设置曲线线型就成了唯一的区分方法。

表2-2列出了MA TLAB 中可供选择的曲线线型、颜色和标记点类型。

表2-2 LineSpec 可选字符串列表

线型 颜色 数据点标记类型

标识符 意义 标识符 意义

标识符 意义 - 实线 r 红色 + 加号 -. 点划线 g

绿色 o 圆圈 -- 虚线 b 蓝色

*

星号 : 点线

c 蓝绿色 . 点

m 洋红色 x 交叉符号 y 黄色 square (或s ) 方格 k 黑色 diamond (或d ) 菱形 w 白色

^ 向上的三角形

v 向下的三角形 > 向左的三角形 <

向右的三角形

pentagram (或p ) 五边形

hexagram (或h )

六边形

例2-3 在同一图形窗口中绘制)sin(x 和)2

sin(π

+x ,并用不同的线型、颜色和标记点。

解:在MA TLAB 命令窗口中输入以下命令:

>>x=0:pi/20:2*pi; >>y1=sin(x);

>>y2=sin(x+pi/2);

>>plot(x,y1,'r:',x,y2,'+')

运行程序代码,输出如图2-4所示的结果图形:

图2-4 不同线性、不同颜色、不同标记点的图形(例2-3)

2.2.2低级绘图命令

MATLAB 允许用户在图形窗口的任意位置用低级绘图命令line 画直线或折线。 line 函数的常用语法格式为:

line(X,Y)

其中X ,Y 都是一维数组,line(X,Y)能够把(X(i),Y(i))代表的各点用线段顺次连接起来,从而绘制出一条折线。

例2-4 画线函数line 使用实例。利用函数line 绘制y=sinx 的图形。 解:在命令窗口输入以下命令:

>>x=0:0.4*pi:2*pi; >>y=sin(x); >>line(x,y)

运行以上程序代码后,得到如图2-4的图形:

图2-5 line 函数画线(例2-4)

例2-5 画线函数line 使用实例。利用函数line 为)sin(x 和)2

sin(π

+x 的图形上加上两

条水平线。

解:在MA TLAB 命令窗口输入以下代码

>>x=0:pi/20:2*pi; >>y1=sin(x);

>>y2=sin(x+pi/2);

>>plot(x,y1,'r:',x,y2,'+') %显示图形 >>line([0,7],[0.5,0.5]) >>line([0,7],[-0.5,-0.5])

运行该程序代码,输出图2-5所示结果图形:

图2-6 添加有水平线的二维曲面图(例2-5)

2.2 二维图形的修饰

由前面的图2-1至2- 6可以看出,当利用plot命令绘图时,虽然运用起来比较简单,但它所自动产生的图形却显得有些简单,未能产生特殊的效果。为此MATLAB提供了一些图形函数,专门对由plot命令所画出的图形进行进一步的修饰,以使其更加美观、更便于应用。如坐标轴范围的设定(axis命令)、加坐标轴名称(xlabel、ylabel命令)、加网络(grid 命令)、加图形加图题(title命令)、对图形进行文字注释(text命令)等。下面将分别进行讲述。

2.2.1 坐标轴的调整

MATLAB可以自动根据曲线数据的范围选择合适的坐标系,从而使得曲线能够尽可能清晰地显示出来,所以在一般情况下用户不必去进行坐标系的选择。但是,如果用户对MATLAB所自动生成的坐标轴不太满意的话,则可以利用axis所要绘制出的图形的坐标轴进行调整。

axis命令的功能非常丰富,按常用用法有如下4类:

●调整坐标轴的范围;

●调整坐标轴的状态;

●保存调整坐标轴的范围;

●保存坐标轴的状态。

2.2.1.1 调整坐标轴的范围

MATLAB采用axis函数可以根据需要适当调整坐标轴的范围,该函数调用格式是:axis([xmin xmax ymin ymax])

此函数将所画的X轴的大小范围限定在{xmin,xmax}之间,Y轴的大小范围限定在{ymin,ymax}之间。

需要说明的是,在绘图时,由于图形的坐标已经给定,所以对坐标轴范围参数的更改,其实际效果也就相当于对原图形进行了放大或缩小处理。

例2-6 调整坐标轴函数axis使用实例。利用函数axis调整y=sinx的坐标轴范围。

解:在命令窗口输入下面的代码

>>x=0:pi/100:2*pi;

>>y=sin(x);

>>line([0,2*pi],[0,0])

>>hold on;

>>plot(x,y)

>>axis([0 2*pi -1 1])

执行程序后,可以得到如图2-7所示的图形。

而如果将最后的一条命令改为:

>>axis([0 2*pi -2 2])

就可以画出如图2-8所示的图形,其显示效果就好像对图2-7的Y轴进行了压缩。

图2-7 坐标轴调整之前的图形图2-8 坐标轴调整之后的图形

2.2.1.2 调整坐标轴的状态

MATLAB在绘图功能中可以根据视图需求,适当调整坐标轴状态,该函数的调用格式是:

axis(str)

此函数的功能是将坐标轴的状态设定为字符串参数str所指定的状态。

参数str是由一对单引号(` `)所包起来的字符串(也可以省略这对单引号),它表明了将坐标轴调整为哪一种状态。各种常用字符串的含义如表2-3所示。

表2-3 Axis各种常用字符串

只要不产生矛盾的含义,一些不同的参数str可以同时起作用,即在语句axis(str)的参数中,可以使用多个修饰字符串,如axis(`auto`,`on`,`ij`)。

例2-7 坐标轴设置函数axis使用实例。利用axis函数为y=sinx绘制笛卡尔坐标系。

解:在命令窗口输入下面的代码

>>x=0:pi/100:2*pi;

>>y=sin(x);

>>line([0,2*pi],[0,0])

>>hold on;

>>plot(x,y)

>>axis([0 2*pi -1 1])

>>axis(`xy`)或axis xy

输入以上命令设置后,运行程序,可以得出图2-9所示的结果图形。

图2-9 笛卡尔坐标系下的正弦曲线图2-10屏幕坐标系下的正弦曲线笛卡尔坐标系的图形,其坐标系的X轴是从左到右,Y轴是由下向上。而有时我们需要绘制Y轴是由上向下的图形,即符合屏幕坐标系的图形,这时可由下述命令来设置坐标轴的方向:

>>axis(`ij`) 或axis ij

此时所绘制出的正弦曲线图形如图2-10所示。

例2-8 图形调整函数axis使用实例。利用函数axis绘制一个半径r=1的单位圆。

解:在命令窗口直接输入以下程序代码,

>>alpha=0:0.01:2*pi;

>>x=sin(alpha);

>>y=cos(alpha);

>>plot(x,y)

>>axis([-1.5 1.5 -1.5 1.5])

>>grid on

>>axis square

执行以上程序后,可以得到如图2-11所示的图形。

仔细观察图2-11可知,这个单位圆有点像一个椭圆,这主要是由于计算机屏幕上X方向和Y方向的单位长度不一致造成的。但下述命令将可以消除这种不一致,从而可以绘制出一个真正的单位圆(如图2-12所示)。

axis(`square`) 或axis square

图2-11 未进行刻度调整的单位圆图2-12 用axis(`square`)调整刻度后的单位圆

下述的命令也可以消除这种不一致,从而可以绘制出一个标准的单位圆(如图2-11所示)。

axis(`equal`) 或axis equal

注意,axis(`square`)的含义是将X坐标轴长度与Y坐标轴长度调整为正方形,而axis(`equal`)的含义是将X坐标轴和Y坐标轴的单位刻度大小调整一样长短。

若用下述命令却可以将图形恢复显示为刻度调整前的形式(图2-11)。

axis(`normal`) 或axis normal

用下述命令可以关闭或打开图形的坐标轴。

axis(`off`) 或axis off

axis(`on`) 或axis on

图2-14所示为用axis(`off`)命令将图2-13所示图形去掉坐标轴后的单位圆。

图2-13 用axis(`equal`)调整刻度后的单位圆图2-14用axis(`off`)去掉坐标轴后的单位圆2.2.1.3 保存坐标轴的范围

MATLAB中有一种可以将坐标轴的范围值[xmin xmax ymin ymax]存储到向量variable 中的功能,该功能实现的格式是:

variable=axis

变量variable保存的是一个向量值,显然这个向量值能够以axis(variable)的形式应用于设定坐标轴的大小范围。

例2-9 对于由例2-8程序所绘制出的图2-11,检查其坐标轴的范围。

解:在命令窗口输入下面的代码,可以实现检查坐标轴的范围

>>AxisRange=axis

AxisRange=

-1.5000 1.5000 -0.6363 0.6363

2.2.1.4 保存坐标轴的状态

MATLAB中可以将当前所使用的坐标轴的状态存储到向量中,这种功能的格式是

[s1,s2.s3]=axis(`state`),该功能是将当前所使用的坐标轴的状态存储到向量[s1,s2,s3]中。

在使用该功能时,需要说明以下几点:

(1)s1说明是否自动设定坐标轴的范围,取值为`auto`或`manual`;

(2)s2说明是否关闭坐标轴,取值为`on`或`off`;

(3)s3说明所使用的坐标轴的种类,取值为`xy`或`ij`。

例2-10 对于例2-8程序所绘制的图2-11,检查其坐标轴的当前状态。

解:在命令窗口输入以下的代码:

>> [s1,s2,s3]=axis(`state`)

s1=

manual

s2=

on

s3=

xy

2.2.2画出或取消网格线

在MA TLAB二维图形中,有无网格线对于图形的显示效果有很大的影响,我们利用grid 函数就可以轻松实现对二维图形中网格线的显示进行控制。grid函数使用的基本格式为:(1)grid on

功能是在所画出的图形中添加网格线。

(2)grid off

功能是将已有的网格线的图形去掉其网格线。

例2-11 网格线控制函数grid使用实例。利用grid命令去掉单位圆图形的网格线。

解:在命令窗口直接输入以下程序代码,

>>alpha=0:0.01:2*pi;

>>x=sin(alpha);

>>y=cos(alpha);

>>plot(x,y)

>>axis([-1.5 1.5 -1.5 1.5])

>>grid on

>>axis square

运行程序后,可以得到如图2-16所示的图形:

图2-15 带有网格线的图形图2-16 不带有网格线的图形

2.2.3设置坐标轴的名称

添加并设置坐标轴标签的函数是xlabel和ylabel,格式为:

(1)xlabel('string')

设置横轴标签为字符串值。

(2)xlabel(...,'PropertyName',PropertyValue,...)

在设置横轴标签值的同时设置其相关属性,比如文字颜色、旋转角度、字体、加粗等。

通过插入菜单的X Label、Y Label项可以设置图形的横轴和纵轴的标签,默认情况下,横轴标签被安排在横轴下方中间位置并且水平排列,纵轴标签被安排在纵轴左方位置并且垂直排列。

坐标轴标签和标题类似,虽然有属于文本,但又不同于普通的文本标注,当用户平移、

缩放坐标轴时,坐标轴标签会随着变化以适应变化后的坐标轴位置。

例2-12 坐标轴标注函数xlabel和ylabel使用实例。利用已有数据作出北京降水量图,并标注坐标轴标签。

解:在M程序编辑器中输入以下代码:

%********************************************************

%程序:EX212.M

%功能:1997-2006年北京年平均降水量

%********************************************************

x=[1997:1:2006];

y=[1.45 0.91 2.3 0.86 1.46 0.95 1.0 0.96 1.21 0.74];

xin=1997:0.2:2006;

yin=spline(x,y,xin);

plot(x,y,'ob',xin,yin,'-.r')

title('1997年到2006年北京年平均降水量图')

xlabel('\it年份','FontSize',15)

ylabel('每年降雨量','FontSize',8)

保存以上M程序文件,执行程序后得到图2-16所示的结果:

图2-17 坐标轴标签(例2-12)

2.2.4设置图形标题

MATLAB 中有专门的函数title来为图形添加标题,调用这种函数的格式是:

(1)title('string')

设置当前绘图区的标题为字符串string的值。

(2)title(...,'PropertyName',PropertyValue,...)

可以在添加或设置标题的同时,设置标题的属性,如字体、颜色、加粗等。

例2-13 图形标注函数title使用实例。利用title函数为图形添加标题。

解:在命令窗口输入下面的代码

>>x=0:0.05:10;

>>y=exp(-0.2*x).*cos(x);

>>plot(x,y)

>>title('\ite^{0.2x}cos(x)','FontWeight','Bold')

执行程序后,可以得到2-18所示结果图形:

图2-18 设置图形标题(例2-13)

2.2.5在图形中显示文字

MATLAB允许用户在图形的任意位置加注一串文字。加注文字的时候,MA TLAB提供了两种不同确定文字位置的操作方式:

(1)用坐标轴确定文字位置;

(2)用鼠标确定文字位置。下面分别介绍这两种不同确定文字的方式。

2.2.5.1用坐标轴确定文字位置

MATLAB允许用户在图形窗口的任意位置用低级命令书写一串字符。

该方式的格式是text(x,y,string,option),主要功能是在图形指定坐标位置(x,y)处,写出由string所给出的字符串。

坐标(x,y)的单位是由选项参数option决定的。

如果不给出该选项参数,则(x,y)坐标的单位与图中的单位是一致的。

如果选项参数取为`sc`,则(x,y)坐标表示规范化的窗口相对坐标,其变化范围为0~1,即该窗口绘图范围的左下角坐标为(0,0),右上角坐标为(1,1)。

例2-14 坐标轴标注函数text使用实例。利用text函数在y=sinx指定位置添加文字。

解:在命令窗口输入以下代码

>>x=0:pi/100:2*pi;

>>y=sin(x);

>>plot(x,y)

>>axis([0 2*pi -1.5 1.5])

>>line([0,2*pi],[0,0])

>>text(0.5,0.85, ' sin(x) ',’sc’)

>>text(0.5*pi,0.5, ‘position’)

>>text(1.5*pi, -0.5, ‘negative’)

运行程序后,可以得到如2-19所示结果图形:

图2-19带有文字说明的正弦曲线

2.2.5.2用鼠标确定位置显示文字

用text命令可以在图形的任意位置上加注文字,但是前提是必须知道其位置坐标。MATLAB也允许用户用鼠标移动的方式在图形窗口中的某一位置放置一个字符串。

用鼠标确定位置显示文字函数是gtext,利用该函数可以通过鼠标,在图形的某一位置写出由string所给出的字符串。

gtext是交互式文本框标注函数,其常用语法格式为:

(1)gtext('string')可以在鼠标点击的位置标注一个单行文本框。

(2)gtext({'string1','string2','string3',...})可以在鼠标点击位置标注一个多行文本框。

(3)gtext({'string1';'string2';'string3';...})可以在通过多次鼠标点击标注多个文本框。

例2-15 文本框标注函数gtext使用实例。利用gtext函数对y=2sinx+2cosx进行文本框标注。

解:在命令窗口输入以下代码

>>x=0:0.02*pi:2*pi;

>>y=2*sin(x)+ 2*cos(x);

>>plot(x,y,pi,sin(pi)+cos(pi),'o')

>>text(pi, 2*sin(pi)+ 2*cos(pi),['sin(\pi)+cos(\pi)=',num2str(sin(pi)+cos(pi))])

>>gtext({'gtext1-line1','gtext1-line2'})

>>gtext({'gtext2-1';'gtext2-2'})

执行以上程序后,可以得到如2-20所示结果图形:

图2-20 文本框标注(例2-15)

2.2.6 图形的标定和颜色条

图例是可以用来标注图形中不同颜色、线型的数据组的实际意义。用户可以通过单击插入菜单的图例(Legend)项,或者单击图形工具条的图例按钮,或者通过legend命令来添加图例以标注图形中的多组数据。

通过菜单或工具按钮的方法添加图例后,图例的各项文字被设置为data1、data2等。要达到用户自定义的设置,使用lengend函数是比较方便的。

legend函数的常用方法为:

(1)legend('string1','string2',...)添加图例,并设置各组数据的图例文字为对应位置字符串值。(2)legend('off')清除图例;

(3)legend('hide')隐藏图例;

(4)legend('show')显示图例。

例2-16 图形标定函数legend使用实例。利用legend函数为y=sinx、y=cosx、y=sin2x*cosx图形添加图例。

解:在M文件编辑器输入以下代码

%********************************************************

%程序:EX216.M

%功能:为图形添加图例

%********************************************************

x=0:0.01*pi:4*pi;

y1=2*sin(x);

y2=cos(x);

y3=sin(2*x).*cos(x);

plot(x,[y1;y2;y3])

axis([0 4*pi -2 2.5])

set(gca,'XTick',[0 pi 2*pi],'XTickLabel',{'0','pi','2pi'})

legend('2*sin(x)','cos(x)','sin(2x)cos(x)')

保存文件后,执行程序可以得到如2-21所示的图形:

图2-21 图例(例2-16)

颜色条是用于显示图形中颜色和数值对应关系的,它主要用在三维图形或其二维等高线图形中。用户可以通过单击插入菜单的颜色条(Colorbar)项,或者单击图形工具条的颜色条按钮,或者通过colorbar命令来添加颜色条。

例2-17 颜色条函数colorbar使用实例。利用colorbar为图形添加颜色条。

解:在命令窗口输入以下代码

>>z=peaks(15);

>>[c,h]=contour(z,6);

>>clabel(c,h)

>>colorbar

执行程序后,可以得到如2-22所示的图形:

图2-22 颜色条(例2-17)

对照图形中的颜色、数值和颜色条中对应颜色、数值,就可以发现颜色条是标志图形中颜色对应的数值范围了。

2.2.7 使用绘图工具栏标注图形

除了使用函数方式来标注图面外,另一种比较方便的做法是直接使用绘图工具栏功能,首先在绘图窗口的菜单中选取【View】中【Plot Edit Toorbar】选项,即会显示如图2-22所示的工具栏,这些工具的功能都类似于微软的画板功能,因此可以很方便地使用:

图2-23 Plot Edit 工具栏

使用这种方法标注图形的步骤是:

(1)首先,单击【Edit Plot】按钮,选取如图2-24所示的曲线为当前对象后,就可以通过【Color】按钮来改变曲线的颜色;或单击【Edit Plot】按钮,选取如图2-24

所示的坐标轴为当前对象后,就可以通过【Color】按钮来填充整个坐标系的背景的颜色了。

(2)在绘图窗口中除了可以插入label、title或text于图中外,还可以单击【Insert Textbox】按钮,于图面上单击鼠标左键来放置该文本框的显示位置,则完成后会自动显示一文本框,于框内输入文字即可,如图2-24所示,MATLAB会自动依据适合的大小来调整文本框,当然,用户也可以自行通过鼠标拖拽来修改文本框的大小与位置。

图2-24 Plot Edit 工具栏的应用

(3)因为我们要指定出两个波峰间的距离,因此单击【Insert Line】按钮,在两波峰两位置出使用鼠标拖拽出两条线,在通过【Insert Double Arrow】按钮画出两线间的箭头;最后我们在该箭头上方建立一个文本框并输入文字的内容为\pi,假设文本框已为当前对象,在文本框上单击鼠标右键选取“Edge Color”选项后,将框的颜色设为白色即可。图2-25所示为完成后的图形。

图2-25 应用Plot Edit工具栏标注图形

(4)图中所有建立好的对象都可以通过【Edit Plot】按钮选取为当前对象后,来修改相关属性,如Text对象就可以通过工具栏的工具来更改文字的颜色、对齐方式、字型与字体等设置。

2.3 填充图形的绘制

有时,为了美观起见,我们需要对一个封闭的图形进行填充处理。MA TLAB提供了1个用于图形填充的命令fill。

fill函数会将x和y数据所指定的点相连,以形成一个封闭的二维多边形,并将此多边形填充颜色。fill的使用方式如下:

(1)fill(x,y,d)

在x与y的数据中,用d指定颜色来填充建立一个多边形。其中d为颜色映像索引向量或矩阵或颜色字符(`r`,`g`,`b`,`c`,`m`,`y`,`w`,`k`)。

若d是列向量,则length(d)必须等于size(x,2)与size(y,2)。

若d为行向量,则length(d)必须等于size(x,1)与size(y,1)。

如果必要,fill函数会自动将多边形依据起点与终点两个端点连接形成一个封闭的多边形。

(2)fill(x,y,ColorSpec)

用ColorSpec指定的颜色填充由x与y定义的多边形,其中ColorSpec可以为颜色:`r`,`g`,`b`,`c`,`m`,`y`,`w`,`k`。

(3)fill(x1,y1,c1,x2,y2,c2)

一次定义多个要填充的二维区域。

(4)fill(…,`PropertyName`,PropertyValue)

允许用户定义组成fill多边形的patch图形对象某个属性名称的属性值。

(5)h=fill(…)

返回patch图形对象句柄值的向量,并且每一个patch对象对应一个句柄值。

例2-18 图形填充命令fill使用实例。利用fill函数绘制一个八角形。

解:在命令窗口输入以下代码

>>t=(1/16:1/8:1)'*2*pi; %定义八角形的刻度

>>x=sin(t);y=cos(t);

>>H=fill(x,y,'r');

>>axis square

>>set(H,'LineWidth',5) %设置八角形的边线宽度

>>set(gcf,'color','w','Position',[400,350,250,150],'MenuBar','none')

>>set(gca,'Visible','off') %隐藏坐标轴

执行该程序,得到如2-26所示的图形:

图2-26 fill绘制八角形

2.4 多坐标系绘图与图形窗口的分割

在科学研究中,有时我们需要在一张图纸中绘制多幅图形,以便于观看它们之间的关系。虽然我们可以通过坐标平移的方法达到这个要求,但这种方法操作起来比较麻烦。

对于这类问题,MA TLAB提供了两种解决的方法:

(1)图形叠印的方法,即使用同一坐标绘制多幅图形;

(2)子图绘制的方法,即利用图形的分割实现多幅子图的绘制。

下面分别对这两种方法进行介绍。

2.4.1 图形叠印法

单独使用hold可以把切换当前的绘图叠加模式,将当前绘图窗口的叠加模式从on改变为off,或者从off改变到on。

hold on或hold off则是明确制定当前绘图窗口叠加绘图模式的开关状态。

hold all不但实现hold on的功能,使得当前绘图窗口的叠加绘图模式打开,而且使新的绘图指令依然循环初始设置的颜色循环序和线型循环序。

当MA TLAB执行到某一条绘图指令时,如果没有图形窗口存在,则MATLAB会新建一个图形窗口,并以新建的图形窗口为当前图形窗口绘图;如果有图形窗口已经存在,则该绘图指令会以最后被激活(最后新建、最后被鼠标点击等)的图形窗口为当前图形窗口进行绘图。

2011全国大学生数模竞赛A题三维立体绘图MATLAB代码

2011全国大学生数模竞赛A题 三维立体绘图MATLAB代码及图像 下载两个数据文件保存到MATLAB工作目录中,同时将下面的程序拷贝到一个M文件里面运行即可。 MATLAB代码和数据文件请到这里下载:https://www.360docs.net/doc/a88230572.html,/thread-19793-1-1.html A题城市表层土壤重金属污染分析 随着城市经济的快速发展和城市人口的不断增加,人类活动对城市环境质量的影响日显突出。对城市土壤地质环境异常的查证,以及如何应用查证获得的海量数据资料开展城市环境质量评价,研究人类活动影响下城市地质环境的演变模式,日益成为人们关注的焦点。 按照功能划分,城区一般可分为生活区、工业区、山区、主干道路区及公园绿地区等,分别记为1类区、2类区、……、5类区,不同的区域环境受人类活动影响的程度不同。 现对某城市城区土壤地质环境进行调查。为此,将所考察的城区划分为间距1公里左右的网格子区域,按照每平方公里1个采样点对表层土(0~10 厘米深度)进行取样、编号,并用GPS记录采样点的位置。应用专门仪器测试分析,获得了每个样本所含的多种化学元素的浓度数据。另一方面,按照2公里的间距在那些远离人群及工业活动的自然区取样,将其作为该城区表层土壤中元素的背景值。 附件1列出了采样点的位置、海拔高度及其所属功能区等信息,附件2列出了8种主要重金属元素在采样点处的浓度,附件3列出了8种主要重金属元素的背景值。 现要求你们通过数学建模来完成以下任务: (1) 给出8种主要重金属元素在该城区的空间分布,并分析该城区内不同区域重金属的污染程度。 (2) 通过数据分析,说明重金属污染的主要原因。 (3) 分析重金属污染物的传播特征,由此建立模型,确定污染源的位置。 (4) 分析你所建立模型的优缺点,为更好地研究城市地质环境的演变模式,还应收集什么信息?有了这些信息,如何建立模型解决问题?

matlab三维二维离散曲面画图教程

傅里叶变换 img=imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %img=double(img); f=fft2(img); %傅里叶变换 f=fftshift(f); %使图像对称 r=real(f); %图像频域实部 i=imag(f); %图像频域虚部 margin=log(abs(f)); %图像幅度谱,加log便于显示 phase=log(angle(f)*180/pi); %图像相位谱 l=log(f); subplot(2,2,1),imshow(img),title('源图像'); subplot(2,2,2),imshow(l,[]),title('图像频谱'); subplot(2,2,3),imshow(margin,[]),title('图像幅度谱'); subplot(2,2,4),imshow(phase,[]),title('图像相位谱'); https://www.360docs.net/doc/a88230572.html,/s/blog_1667198560102wmzu.html 傅里叶变换 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 I = rgb2gray(I);%将图像进行灰度处理 J = fft2(I);%将图像实行傅里叶变换 figure,imshow(I);%这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0;%不必要的过滤掉 figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J);figure,imshow(K,[0 255]);%傅里叶逆变换 自己所写的代码 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 J = fft2(I); %将图像实行傅里叶变换figure,imshow(I); %这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0; %不必要的过滤掉figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J); ss=real(ifft2(J));sss=uint8(ss);subplot(1,2,2); imshow(sss) figure,imshow(K,[0 255]); %傅里叶逆变换

实验五MATLAB的基本绘图方法

实验三MATLAB的基本绘图方法 一、实验目的 1.二维平面图形的绘制 2.三维立体图形的绘制 3.隐函数作图 二、实验地点:A404 三、实验日期: 四、实验内容 (一)二维平面图形的绘制 1、Plot的使用方法介绍 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,…元素为纵坐标值绘制多条曲线。 例1:画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 注:在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MA TLAB 软件专门提供了这方面的参数选项,我们只要在每个坐标后加上相关字符串,就可实现它们的功能。具体参见教材。 2、图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 图形修饰函数表如下: 函数含义 grid on (/off) 给当前图形标记添加(取消)网络 xlable(‘string’) 标记横坐标 ylabel(‘string’) 标记纵坐标 title(‘string’) 给图形添加标题 text(x,y,’string’) 在图形的任意位置增加说明性文本信息 gtext(‘string’) 利用鼠标添加说明性文本信息 axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值 例2、给例1的图形中加入网络和标记。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)

matble课程论文(MATLAB在三维作图中的应用)

《MATLAB》课程论文 MATLAB在三维作图中的应用 姓名: 学号: 专业: 班级: 指导老师: 学院: 完成日期:

MATLAB在三维作图中的应用 [摘要]MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。所以MATLAB的计算准确、效率高、使用快捷等优点常被广泛应用于科学和工程领域. [关键字]MATLAB语言三维图形图像处理绘制 一,问题的提出 MATLAB语言是当前国际学科界应用很广泛的一种软件,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,利用它强大的图像处理来绘制三维图形既简单而且也很方便。在绘制三维图形的过程中也用到了MATLAB语言的其他功能,绘制三维图形时用到了它提供的一些函数,利用这些函数可以方便的生成一些特殊矩阵,因此可生成一个坐标平面。MATLAB语言强大的功能也在二维三维绘图中的得到了很广泛的应用,利用它所提供的精细的图像处理功能,如MATLAB还提 供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件,还可以对所绘制的三维图形作一个修饰的处理。MATLAB语言具有强大的以图形化显示矩阵和数组的能力,同时它给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技术包括三维的可视化、图形处理、动画等高层次的专业图形的高级绘图,例如图形的光照处理、色度处理以及四维数据的表现等。那么,如何把它强大的功能应用于实际应用中,下面我们将用实例说明MATBLE在三维作图中的应用。 二,MATLAB的主要功能及特点 MATLAB近几年广泛用于图像处理和识别, 使用MATLAB设计模式识别应用软件将使设

实验Matlab三维作图的绘制

实验9 三维绘图 一、实验目的 学会MATLAB软件中三维绘图的方法。 二、实验内容与要求 1.三维曲线图 格式一:plot3(X,Y,Z,S). 说明:当X,Y,Z均为同维向量时,则plot3描出点X(i),Y(i),Z(i)依次相连的空间曲线.若X,Y均为同维矩阵,X,Y,Z每一组相应列向量为坐标画出一条曲线,S为‘color﹣linestyle﹣marker’控制字符表1.6~表1.10. 【例1.79】绘制螺旋线. >>t=0:pi/60:10*pi; >>x=sin(t); >>y=cos(t); >>plot3(x,y,t,’*-b’) >>grid on 图形的结果如图1.16所示. 格式二:comet3(x,y,z). 说明:显示一个彗星通过数据x,y,z确定的三维曲线. 【例1.80】 >>t=-20*pi:pi/50:20*pi; >>comet3(sin(t),cos(t),t) 可见到彗星头(一个小圆圈)沿着数据指定的轨道前进的动画图象,彗星轨道为整个函数所画的螺旋线. 格式三:fill3(X,Y,Z,C) ℅填充由参数X,Y,Z确定的多边形,参数C指定颜色. 图1.16 例1.79图形结果图1.17 例1.81图形结果 【例1.81】

>>X=[2,1,2;9,7,1;6,7,0]; >>Y=[1,7,0;4,7,9;0,4,3]; >>Z=[1,8,6;7,9,6;1,6,1]; >>C=[1,0,0;0,1,0;0,0,1] >>fill3(X,Y,Z,C) >>grid on 图形的结果如图1.17所示. 问题1.30:图1.17中每个三角形按什么规律画出的?(用X,Y,Z的对应列元素值为坐标画三角形)每个三角形内填充的颜色又有何规律?(用C 第i列元素值对应的颜色,从第i个三角形对应顶点向中心过渡)若C=[1,5,10;1,5,10;1,5,10],结果如何? 2.三维网格图 格式:mesh(X,Y,Z,C) ℅画出颜色由C指定的三维网格图. meshc(X,Y,Z,C) ℅画出带有等高线的三维网格图. meshz(X,Y,Z,C) ℅画出带有底座的三维网格图. 说明:若X与Y均为向量,n=length(X),m=length(Y), Z必须满足[m,n]=size(Z),则空间中的点(X(j),Y(i),Z(i,j))为所画曲面网线的交点,X 对应于Z的列,Y对应于Z的行;若X,Y,Z均为同维矩阵,则空间中的点(X(i,j),Y(i,j),Z(i,j))为所画曲面的网线的交点;矩阵C指定网线的颜色,MATLAB对矩阵C中的数据进行线性处理,以便从当前色图中获得有用的颜色,若C缺省,网线颜色和曲面的高度Z相匹配. 在三维作图常用到命令meshgrid,其功能是生成二元函数z=f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y. 格式:[X,Y]= meshgrid(x,y). 说明:输入向量x为x-y平面上x轴的值,向量y为x-y平面上y轴的值.输出矩阵X为x-y平面上数据点的横坐标值,输出矩阵Y为x-y平面上数据点的纵坐标值. 【例1.82】 >> x=1:4; >> y=1:5; >> [x,y]=meshgrid(x,y) x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 y = 1 1 1 1

上机习题6_MATLAB7.0三维绘图

实验六 MATLAB7.0三维绘图实验目的: ①掌握绘制三维图能形的方法; ②掌握图形修饰处理方法; ③知道图像处理方法,了解动画制作方法。 实验要求:给出程序和实验结果。 实验容: 一、绘制三维曲线 sin() cos() sin()cos() x t y t z t t t = ? ? = ? ?= ? 二、绘制三维曲面图z=sin(x+sin(y))-x/10。 三、绘制z=x2+y2的三维网线图形; 四、绘制三维陀螺锥面; (仅供参考: t1=0:0.1:0.9; t2=1:0.1:2; r=[t1 -t2+2]; [x,y,z]=cylinder(r,30); surf(x,y,z); grid ) 五、在xy平面选择区域[-8,8]×[-8,8],利用mesh、meshc、meshz和surf绘 制z= 六、绘制光照处理后的球面,取三个不同的光照位置进行比较。(提示:可以利用函数sphere和 light) 七、利用peaks产生数据,绘制多峰曲面图。 八. 2 2y x xe z- - =,当x和y的取值围均为-2到2时,用建立子窗口的方法在同一 个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。 九绘制peaks函数的表面图,用colormap函数改变预置的色图,观察色彩的分

布情况。 十、用sphere函数产生球表面坐标,绘制不透明网线图、透明网线图、表面图和带剪孔的表面图。 十一、将5.9题中的带剪孔的球形表面图的坐标改变为正方形,以使球面看起来是圆的而不是椭圆的,然后关闭坐标轴的显示。 实验结果: (1) (2)

(3) (4)

最新matlab各种三维绘图及实例

1 Matlab绘制三维图形 2 三维曲线 3 plot3函数与plot函数用法十分相似,其调用格式为: 4 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 5 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。6 当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同7 维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 8 例绘制三维曲线。 9 程序如下: 10 t=0:pi/100:20*pi; 11 x=sin(t); 12 y=cos(t); 13 z=t.*sin(t).*cos(t); 14 plot3(x,y,z); 15 title('Line in 3-D Space'); 16 xlabel('X');ylabel('Y');zlabel('Z'); 17 18 三维曲面 19 1.产生三维数据 20 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格21 式为: 22 x=a:d1:b; y=c:d2:d;

23 [X,Y]=meshgrid(x,y); 24 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,25 矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 26 2.绘制三维曲面的函数 27 surf函数和mesh函数的调用格式为: 28 mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 29 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 30 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点31 上的高度矩阵,c用于指定在不同高度下的颜色范围。 32 例绘制三维曲面图z=sin(x+sin(y))-x/10。 33 程序如下: 34 [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐35 标 36 z=sin(x+sin(y))-x/10; 37 mesh(x,y,z); 38 axis([0 4*pi 0 4*pi -2.5 1]); 39 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面40 函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z 41 轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 42 例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 43 程序如下: 44 [x,y]=meshgrid(-8:0.5:8); 45 z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);

MATLAB三维绘图数据源分析及镂空研究_张玉叶

价值工程 0引言 一般而言,在标量空间,三维图形的表达难以实现,而MATLAB 具有有很好的三维数据可视化功能,尤其适用于矩阵运算。本文分析了在标量空间绘制三维图形时所需要的数据源是如何产生的,以及深入分析数据源的产生对于三维图形作“镂空”处理的意义。这个研究对于MATLAB 辅助实际应用研究具有重要的意义。 1三维绘图数据源产生分析 MATLAB 绘制三维图形的方法是用矩形网格来绘制曲面图形,meshgrid 指令就是在(x ,y )平面来产生矩形网格的,格式为:[X ,Y]=meshgrid (x ,y ) 其中, x ,y 为两个矢量,而X ,Y 为两个矩阵。而meshgrid 指令的作用就是将由矢量x 和y 定义的域转换成一个由两个数组X 和Y 组成的标量空间,以便于对形如z=f (x,y )的方程进行三维表达。输出数组X 的各值是由矢量x 的各值在y 轴上扩展成矢量y 的大小[1]。同样,输出数组Y 的各值是由矢量y 的各值在x 轴上扩展成矢量x 的大小。 >>x=-5:5;>>y=x ; >>[X,Y]=meshgrid (x,y ) X=-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345 Y=-5-5-5-5-5-5-5-5-5-5-5-4-4-4-4-4-4-4-4-4-4-4-3-3-3-3-3-3-3-3-3-3-3-2-2-2-2-2-2-2-2-2-2-2-1-1-1-1-1-1-1-1-1-1-1000000000001111111111122222222222 33333333333 4444444444455555555555>>Z=X.^2+Y.^2;>>surf (X ,Y ,Z ) 程序提供了一维行向量x=[-5-4-3-2-1012345],将x 在y 的方向上扩展成y 大小,形成数组X ,同理程序提供了一维列向量y=[-5-4-3-2-1012345]’,将y 在x 的方 向上扩展成x 的大小, 形成数组Y,在x-y 平面[2] ,数组X 和数组Y 形成了数据点阵如图1所示,然后根据关系式:z=x 2+y 2计算每个数据点阵在空间中的高度,用surf 指令做出表面图形,如图2所示。 2镂空处理 2.1平面域镂空分析明确了3D 图形的数据来源,就可以对立 体图形的各个部分进行镂空处理。 如果要在图2的基础上对空间曲面图进行镂空,效果如图3所示,操作指令如下: >>x=-5:5;>>y=x ; >>[X,Y]=meshgrid (x,y );>>X(8:9,8:9)=nan*X (8:9,8:9);>>Y(8:9,8:9)=nan*Y (8:9,8:9);>>surf (X,Y,Z ) 根据指令段,数组X 的第8行到第9行, 第8列到第9列数据乘以一个非数nan ,数组Y 的第8行到第9行,第8列到第9列数据也乘以一个非数nan ,数据点阵发生了变化,如图4所示:进行绘 图时,含有非数的数据部分被忽略[3] ,即不被绘制。从立体效果来看,对空间表面图进行了镂空操作。 2.2镂空疑点对镂空后的立体图形进行视角修饰,即在绘图之间加上指令〉〉view (2),让方位角az=0o ,仰角el=90o ,即对图形进行俯视操作,数据源的变化如图5所示,不难发现一个问题,根据数据源变化,我们绘图的时候应该忽略X (8:9,8:9),对应忽略Y (8:9,8:9)四个点,根据俯视图,镂空的区域似乎应该如图6所示,问题在哪里呢? —————————————————————— —基金项目:2009年咸阳师范学院教研基金项目(09XSYK205)。作者简介:张玉叶(1979-),女,陕西礼泉人,讲师,研究方向为电子设计自 动化。 MATLAB 三维绘图数据源分析及镂空研究 Data Sources Analysis of 3D Painting on MATLAB and Study of Piercing Technology 张玉叶Zhang Yuye (咸阳师范学院物理与电子工程学院,咸阳712000) (College of Physics and Electronics Engineering ,Xianyang Normal University ,Xianyang 712000,China ) 摘要:分析了MATLAB 三维图形绘制时数据源产生的机理,并对立体图形处理中的“镂空”技术,从平面域到圆域,逐渐深入探索如何3D 体 图形进行任意镂空的技巧,并从这个切入点深刻理解三维图形数据源与图形本身的对应关系。 结论对于3D 图形数据源分析及可视化具有实际应用意义。 Abstract:The paper analyzes the production mechanism of the data sources of 3D paintings.Just for piercing technology,from plane area to circle area,gradually it explores how to arbitrarily pierce a 3D graphic.From this breakthroug point,the corresponding relationship between the 3D graphic data sources and the graphic itself has been understood deeply.The conclusion has practical sense in data resources analysis of 3D graphics and visualizition. 关键词:MATLAB ;meshgrid ;数据源;镂空Key words:MATLAB ;meshgrid ;data source ;piercing 中图分类号:TP391.41 文献标识码:A 文章编号:1006-4311(2010) 34-0174-02 ·174·

matlab各种三维绘图及实例

Matlab绘制三维图形 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。 例绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1);

matlab上机习题6 MATLAB7.0三维绘图

实验六MATLAB7.0三维绘图实验目的: ①掌握绘制三维图能形的方法; ②掌握图形修饰处理方法; ③知道图像处理方法,了解动画制作方法。 实验要求:给出程序和实验结果。 实验内容: 一、绘制三维曲线 sin() cos() sin()cos() x t y t z t t t = ? ? = ? ?= ? 二、绘制三维曲面图z=sin(x+sin(y))-x/10。 三、绘制z=x2+y2的三维网线图形; 四、绘制三维陀螺锥面; (仅供参考: t1=0:0.1:0.9; t2=1:0.1:2; r=[t1 -t2+2]; [x,y,z]=cylinder(r,30); surf(x,y,z); grid ) 五、在xy平面内选择区域[-8,8]×[-8,8],利用mesh、meshc、meshz和surf绘 制/ z= 六、绘制光照处理后的球面,取三个不同的光照位置进行比较。(提示:可以利用函数sphere和light) 七、利用peaks产生数据,绘制多峰曲面图。 八. 2 2y x xe z- - =,当x和y的取值范围均为-2到2时,用建立子窗口的方法在同 一个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。

九绘制peaks函数的表面图,用colormap函数改变预置的色图,观察色彩的分布情况。 十、用sphere函数产生球表面坐标,绘制不透明网线图、透明网线图、表面图和带剪孔的表面图。 十一、将5.9题中的带剪孔的球形表面图的坐标改变为正方形,以使球面看起来是圆的而不是椭圆的,然后关闭坐标轴的显示。 实验结果: 1 t=0:0.1:10; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z)

Matlab三维立体画图

atlab 三维画图 (2011-04-12 21:11:26) 转载 ▼ 标签: matlab 三维图 分类: 课程学习 今天被matlab 画三维图给整疯掉了,想通过三角形两边的变化求一边对角的变化函数图,但是matlab 中说这是complex ,无法画图,我就想限制值域,这样就是一对一的函数了,但是matlab 不知道怎么实现,网上查了查也没找到。就先放一放再说吧。 不过过程中发现matlab 画出的图还是很强大且漂亮的。附上两张: 1、mesh 函数 [x, y]=meshgrid(-4:.2:4); R=sqrt(x.^2+y.^2); z=-cos(R); mesh(x,y,z) xlabel('x\in[-4,4]','fontweight','bold'); ylabel('y\in[-4,4]','fontweight','bold'); zlabel('z=-cos(sqrt(x^2+y^2))','fontweight','bold'); title('旋转曲面','fontsize',15,'fontweight','bold','fontname','隶书'); 二、meshc 函数 其他不变,把上面代码中的mash 换成mashc ,得到的图如下,在网孔线下方绘制了轮廓线。

三、mashz函数 Matlab 三维作图1 画一个可透视的椭球 figure a = 15; b = 10; c = 5;

k = 5; n = 2^k-1; theta = pi*(-n:2:n)/n; phi = (pi/2)*(-n:2:n)'/n; X = a*cos(phi)*cos(theta); Y = b*cos(phi)*sin(theta); Z = c*sin(phi)*ones(size(theta)); surf(X,Y,Z,'FaceColor','interp',... 'EdgeColor','none',... 'FaceLighting','phong') axis tight camlight left alpha(.33) % 产生透视效果 这是在7.1.上画的图: .................... 建立空间等高线[X,Y] = meshgrid([-2:.25:2]); Z = X.*exp(-X.^2-Y.^2); contour3(X,Y,Z,30) h = findobj('Type','patch');

使用matlab绘制三维图形的方法

使用matlab 绘制三维图形的方法 三维曲线 plot3函数与plot 函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n),其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。当x,y,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例 绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z);grid title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); 如下图: -1 1 X Line in 3-D Space Y Z

三维曲面 1.产生三维数据 在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。 2.绘制三维曲面的函数 surf 函数和mesh 函数的调用格式为: mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 一般情况下,x,y,z 是维数相同的矩阵。x,y 是网格坐标矩阵,z 是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。 例 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); 如下图: -2.5 -2-1.5-1-0.500.51 此外,还有带等高线的三维网格曲面函数meshc 和带底座的三维网格曲面函数meshz 。其用法与mesh 类似,不同的是meshc 还在xy 平面上绘制曲面在z 轴方

MATLAB_的两种基本绘图功能:二维平面图形和三维立体图形绘制

本节介绍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 plot画图

转)plot 画图 默认分类 2009-04-30 16:38:02 阅读116 评论0字号:大中小 第五讲计算结果的可视化 本节介绍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),我们只要在每个坐标后加上相关字符串,就可实 现它们的功能。 - 2 - 表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三维绘图命令和演示

三维绘图 1 三维绘图指令 2 基本XYZ立体绘图命令 mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由 函数形成的立体网状图: x=linspace(-2, 2, 25); % 在x轴上取25点 y=linspace(-2, 2, 25); % 在y轴上取25点 [xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵 zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵 mesh(xx, yy, zz); % 画出立体网状图

●surf和mesh的用法类似: x=linspace(-2, 2, 25); % 在x轴上取25点 y=linspace(-2, 2, 25); % 在y轴上取25点 [xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵 zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是25x25的矩阵 surf(xx, yy, zz); % 画出立体曲面图 ●peaks 为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为: 要画出此函数的最快方法即是直接键入peaks: peaks

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) - 1/3*exp(-(x+1).^2 - y.^2) ●我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围 裙: [x,y,z]=peaks; meshz(x,y,z); ●waterfall可在x方向或y方向产生水流效果: [x,y,z]=peaks; waterfall(x,y,z);

MATLAB中的三维绘图函数总结

一、基本XYZ 立体绘图命令(画出函数2 2 y x xe z --=形成的立体网状图为例) 1、mesh 和plot 是三度空间立体绘图的基本命令,mesh 可画出三维网线图,plot 则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。 x=linspace(-2, 2, 25); % 在-2到2,x 轴上取25点 y=linspace(-2, 2, 25); % 在-2到2,y 轴上取25点 [xx,yy]=meshgrid(x, y); % xx 和yy 都是21x21的矩阵 zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz 也是21x21的矩阵 mesh(xx, yy, zz); % 应用mesh 画出立体网状图 xlabel('x axes'); ylabel('y axes'); zlabel('z axes'); title('mesh picture of curve-face zz=xx.*exp(-xx.^2-yy.^2)'); -2 -1 1 2 -2 -1 1 2 -0.50 0.5 x axes mesh picture of curve-face zz=xx.*exp(-xx.2-yy.2) y axes z a x e s 2、三维曲面图surf ,与三维网线图不同:网线图线条有颜色,空挡无色(白色);曲面图线条为黑色,空挡有颜色。 x=linspace(-2, 2, 25); % 在x 轴上取25点 y=linspace(-2, 2, 25); % 在y 轴上取25点 [xx,yy]=meshgrid(x, y); % xx 和yy 都是21x21的矩阵 zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz 也是21x21的矩阵 surf(xx, yy, zz); % 画出立体曲面图

MATLAB 二维三维画图 仿真 数组运算

1.数学 (1)数组运算; x=[1 2 3 4]; y=[3 4 5 6]; z=x+y %数组x与数组y相加得到数组z z = 4 6 8 10 z=x-y %数组x与数组y相减得到数组z z = -2 -2 -2 -2 z=x.*y %数组x与数组y相乘得到数组z z = 3 8 15 24 z=x./y %数组x与数组y相除得到数组z z = 0.3333 0.5000 0.6000 0.6667 (2)矩阵及其运算 a=[1 2 3 4;2 3 4 5;3 4 5 6] a= 1 2 3 4 2 3 4 5 3 4 5 6 a1=a' %矩阵的转置 a1 = 1 2 3 2 3 4 3 4 5 4 5 6 b=[1 2 3;4 5 6;7 8 9]; c=[12 34 44;2 3 5;6 7 8]; d=b+c %矩阵的相加 d = 13 36 47 6 8 11 13 15 17 e=b-c %矩阵的相减 e = -11 -32 -41 2 2 1 1 1 1 A=b*c %矩阵的相乘 A = 34 61 78 94 193 249

154 325 420 A=c*b %矩阵的相乘 A = 456 546 636 49 59 69 90 111 132 A=[1 12 7;3 8 5;4 3 6]; B=[4;9;13]; C=A\B %矩阵的左除 C = 2.6442 -0.1731 0.4904 B=flipud(A) %矩阵B由矩阵A上下翻转得到 B = 4 3 6 3 8 5 1 1 2 7 C=A/B %矩阵的右除 C = 0 0 1 0 1 0 1 0 0 D=A^2 %矩阵A的二次方 D = 65 129 109 47 115 91 37 90 79 (3)函数及其运算 x=0:pi/100:2*pi; y=sin(x); plot(x,y) %正弦函数

相关文档
最新文档