您的位置:首页 > 编程语言 > MATLAB

matlab绘图基础

2014-04-19 13:31 183 查看
① 二维图形

二维绘图的基本命令有plot,loglog,semilogx,semilogy 和polar。它们的使

用方法基本相同,其不同特点是在不同的坐标中绘制图形。plot 命令使用线性坐标空

间绘制图形;loglog 命令在两个对数坐标空间中绘制图形;而semilogx(或semilogy)

命令使用x 轴(或y 轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形;polar

使用极坐标空间绘制图形。

二维绘图命令plot 为了适应各种绘图需要,提供了用于控制线色、数据点和线型

的3 组基本参数。它的使用格式如下:

plot(x,y,’color_point_linestyle’)

该命令是绘制y 对应x 的轨迹的命令。y 与x 均为向量,且具有相同的元素个数。

用字符串‘color_point_linestyle’完成对上面3 个参数的设置。线色(r-red,g-green,

b-blue,w-white,k-black,i-invisible,y-yellow),数据点(.,o,x,+,*,S,

H,D,V,^,>,<,p)与线型(-,-.,--,:)都可以根据需要适当选择。

当 plot(x,y)中的 x 和y均为m× n矩阵时,plot 命令将绘得n条曲线。

plot(t,[x1,x2,x3])在同一坐标轴内同时绘制三条曲线。

如果多重曲线对应不同的向量绘制,可使用命令

plot(t1,x1,t2,x2,t3,x3)

式中x1 对应t1,x2 对应t2 等等。在这种情况下,t1,t2 和t3 可以具有不同的元

素个数,但要求x1,,x2 和x3 必须分别与t1,t2 和t3 具有相同的元素数量。

subplot 命令使得在一个屏幕上可以分开显示n 个不同坐标系,且可分别在每一个

坐标系中绘制曲线。其命令格式如下:

subplot(r,c,p)

该命令将屏幕分成r*c,而p 表示在第几个窗口。窗口的排号是从左到右,自上而下。

在图形绘制完毕后,执行如下命令可以再在图中加入题目、标号、说明和分格线等。

这些命令有title,xlabel,ylabel,text,gtext 等。它们的命令格式如下:

title(‘My Title’),xlabel(‘My X-axis Label’),ylabel(‘My Y-axis Label’),

text(x,y,'Text for annotation'),gtext('Text for annotation'),

grid

gtext命令是使用鼠标器定位的文字注释命令。当输入命令后,可以在屏幕上得到

一个光标,然后使用鼠标器控制它的位置。按鼠标器的左键,即可确定文字设定的位置。

hold on 是图形保持命令,可以把当前图形保持在屏幕上不变,同时在这个坐标

系内绘制另外一个图形。hold 命令是一个交替转换命令,即执行一次,转变一个状态

(相当于hold on、hold off)。

Matlab可以自动选择坐标轴的定标尺度,也可以使用axis命令定义坐标轴的特殊

定标尺度。其命令格式如下:

axis([x-min,x-max,y-min,y-max])

axis 命令的另一个作用是控制纵横尺度的比例。例如,输入axis(‘square’)后,可得

到一个显示方框,此时再在该框内绘制一个圆形时(如:plot(sin(x),cos(x)),在屏

幕上可以看到一个圆(一般情况下,由于屏幕的不规则原因,只能看到一个椭圆)。再

次输入axis(‘normal’)命令,屏幕返回到一般状态。



x=0:0.25:5;

-298-

y1=x.^0.1;

y2=x.^0.5;

y3=x.^0.8;

y4=x.^1.5;

t=0:0.001:2*pi;

hold on

plot(3*cos(t),3*sin(t))

plot(x,y1,'bo',x,y2,'rH-')

plot(x,y3,'gp--')

plot(x,y4,'mx-.')

title('My Title'),xlabel('My X-axis Label'),ylabel('My Y-axis

Label')

text(2,8,'Text for annotation')

gtext('Text for annotation'),grid

结果如图所示:

-3 -2 -1 0 1 2 3 4 5

-4

-2

0

2

4

6

8

10

12

My Title

My X-axis Label

My Y-axis Label

Text for annotation

Text for annotation

例 用极坐标绘图命令绘制方程r = cos 2θ (四叶玫瑰线)的图形。

x=0:0.1:2*pi;

r=cos(2*x);

polar(x,r)

例 随机地产生20 个数据,再根据这些数据画统计直方图。

x=rand(1,20);

y=round(20*x);

subplot(1,2,1)

hist(x)

subplot(1,2,2)

hist(y)

② 三维图形

在实际工程计算中,最常用的三维绘图是三维曲线图、三维网格图和三维曲面图3

种基本类型。与此对应,Matlab 也提供了3 个三维基本绘图命令(三维曲线命令plot3、

三维网格命令mesh 和三维表面命令surf)。下面先初步介绍其中的两个。

-299-

i)三维曲线

plot3(x,y,z)通过描点连线画出曲线,这里x,y,z 都是n 维向量,分别表示该曲线

上点集的横坐标、纵坐标、竖坐标。

例 在区间[0,10*pi]画出参数曲线x = sin(t), y = cos(t),z = t ,并分别

标注。

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

plot3(sin(t),cos(t),t)

xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')

结果:

ii)网格

命令mesh(x,y,z)画网格曲面。这里x,y,z 是三个同维数的数据矩阵,分别表示数

据点的横坐标、纵坐标、竖坐标,命令mesh(x,y,z)将该数据点在空间中描出,并连成

网格。

例 绘制二元函数

xy

z = sin(xy)

的三维网格图。

x=-3:0.1:3;y=-5:0.1:5;

x1=ones(size(y'))*x;y1=y'*ones(size(x));

[x2,y2]=meshgrid(x,y);

z1=(sin(x1.*y1)+eps)./(x1.*y1+eps);

z2=(sin(x2.*y2)+eps)./(x2.*y2+eps);

subplot(1,2,1),mesh(x1,y1,z1)

subplot(1,2,2),mesh(x2,y2,z2)

结果“

③ 符号函数的简易绘图函数ezplot

ezplot(f)绘制f(x)的函数图,这里f 为代表数学表达式的包含单个符号变量x 的字

符串或符号表达式。x 轴的近似范围为[-2*pi,2*pi]。

ezplot(f,xmin,xmax)或ezplot(f,[min,max])使用输入参数来代替默认横坐标范围[-

2*pi,2*pi]。

例 画出函数 y = tan x的图形

解:ezplot(‘tan(x)’)

结果:

④ 绘制函数图函数fplot

fplot(fun,lims)绘制由字符串fun 指定函数名的函数在x 轴区间为lims=[xmin, xmax]

的函数图。若lims=[xmin,xmax,ymin,ymax],则y 轴也被输入限制。fun 必须为M 文件

的函数名或对变量x 的可执行字符串,此字符串被送入函数eval 后被执行。函数fun(x)

必须要返回针对向量x 的每一元素结果的行向量。

例 画

解:(1)首先用 M 文件fun1.m定义函数 f (x)如下:

function y=fun1(x);

if x<1

-300-

y=x+1;

else

y=1+1./x;

end

(2)在matlab 命令窗口输入

fplot(‘fun1’,[-3,3])

就可画出函数 f (x)的图形。

⑤ 画等高线的函数contour

在Matlab 中,可以用contour 命令绘制平面等高线,用contour3 命令绘制空间等高

线。

绘制平面等高线 contour 命令的具体使用格式为:

contour(x,y,z,n)

contour(x,y,z,v)

contourf(…)

其中x,y 为其横纵坐标值向量,如果x 为s 维,y 为m 维,则z 为m×s 维矩阵,为对

应于坐标(x,y)的高度。参数n 为整数,指定了绘出等高线的条数。参数v 为向量,

指定了在哪些高度绘出等高线,如只想在一个高度z 绘出等高线,则v=[z,z]。

contourf(…)命令的参数与contour 命令完全相同,只是其绘出的等高线图将被自动

填上颜色。

c=contour(x,y,z,n)

c=contour(x,y,z,,v)

上面2 个命令用来计算所画等高线的x,y 坐标值。

clabel(c)

clabel(c,v)

上面2 个命令用来标注计算的c 阵处的高度值。clabel(c)将把所绘等高线全部自动

标注,clabel(c,v)将自动标注由向量v 确定的若干条等高线的高度值。



clc;clf;

x=0:400:5600;

y=0:400:4800;

z=[370,470,550,600,670,690,670,620,580,450,400,300,100,150,250;

510,620,730,800,850,870,850,780,720,650,500,200,300,350,320;

650,760,880,970,1020,1050,1020,830,800,700,300,500,550,480,350;

740,880,1080,1130,1250,1280,1230,1040,900,500,700,780,750,650,550;

830,980,1180,1320,1450,1420,1400,1300,700,900,850,810,380,780,750;

880,1060,1230,1390,1500,1500,1400,900,1100,1060,950,870,900,930,950;

910,1090,1270,1500,1200,1100,1350,1450,1200,1150,1010,880,1000,1050,1100;

950,1190,1370,1500,1200,1100,1550,1600,1550,1380,1070,900,1050,1150,1200;

1430,1450,1460,1500,1550,1600,1550,1600,1600,1600,1550,1500,1500,1550,1550;

1420,1430,1450,1480,1500,1550,1510,1430,1300,1200,980,850,750,550,500;

1380,1410,1430,1450,1470,1320,1280,1200,1080,940,780,620,460,370,350;

1370,1390,1410,1430,1440,1140,1110,1050,950,820,690,540,380,300,210;

1350,1370,1390,1400,1410,960,940,880,800,690,570,430,290,210,150];

figure,hold on

c=contourf(x,y,z,10);clabel(c)

text(0,800,'▼\leftarrow 起点','fontsize',15,'color','r')

text(4000,2000,'▼\leftarrow 居民点','fontsize',15,'color','r')

-301-

text(2000,4000,'▼\leftarrow 矿区','fontsize',15,'color','b')

line([2400,4800],[2400,0])

figure

surf(x,y,z),view(50,30),hold on

text(0,800,680,'▼','fontsize',15,'color','r')

text(0,600,880,'起点','fontsize',15,'color','r')

text(4000,2000,950,'▼','fontsize',15,'color','r')

text(4200,2000,1150,'居民点','fontsize',15,'color','w')

text(2000,4000,1320,'▼\leftarrow 矿区','fontsize',15,'color','b')

结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: