nullMatlab绘图Matlab绘图一、2d绘图
二、图形属性控制
三、3d绘图 Matlab提供了大量的高层绘图函数,图形每一部分的属性都是按缺省方式设置的,绘图即方便又高效。
同时,Matlab还提供了底层绘图函数,通过对图形对象属性的设置与操作,可以对图形的每一部分进行控制。(这种绘图方式常称为句柄绘图)一、2d绘图一、2d绘图1、绘制2d图形的基本步骤
2、直角坐标系绘图:plot( )
3、对数坐标绘图:loglog( ), semilogx( ), ...
4、双y轴绘图:plotyy( )
5、极坐标系绘图:polar( )
6、二维绘图函数汇总1、绘制2d图形的基本步骤1、绘制2d图形的基本步骤 手工作图1、找点: x=0, pi/6, pi/3, pi/2, 2*pi/3, 5*pi/6, …2、计算函数值: y=sin(0), sin(pi/6), sin(pi/3), …3、描点:在坐标系中画出这些离散点4、用直线或曲线连接这些点,得到函数的大致图形如何画出 y=sin(x) 在 [0, 2*pi] 上的图像?nullMatlab 作图的基本步骤1、准备绘图数据:
x=[0:pi/10:2*pi]
y=sin(x)2、调用绘图函数作出图形,
如: plot(x,y) 3、调用相关函数和命令调整图形特性,如:
grid on
axis([-1,8,-2,2])注意:准备matlab绘图数据时,数据应进行排序。注意:准备matlab绘图数据时,数据应进行排序。x = [0,4/3,1,1/2,1/3,2/3,1/6,1,5/6,4/3,7/6,5/3,3/2,2,11/6]
x = x*pi
y = sin(x)
plot(x,y)
x = [0,4/3,1,1/2,1/3,2/3,1/6,1,5/6,4/3,7/6,5/3,3/2,2,11/6]
x = sort(x)*pi
y = sin(x)
plot(x,y)
nullMatlab 作图比手工作图功能强大2、直角坐标系2d绘图:plot( )2、直角坐标系2d绘图:plot( )plot( )是最基本的二维绘图函数,功能包括:自动打开一个图形窗口(Figure),如果已经存在一个图形窗口,则清除当前图形,绘制新图形
用直线连接相邻两数据点来绘制图形
可以一次绘制一条曲线,也可以一次绘制多条曲线
可以设定绘图颜色、点型、线型、线宽等特性plot(Y) plot(X1,Y1,...,Xn,Yn) plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec) plot(...,'PropertyName',PropertyValue,...) plot(axes_handle,...) h = plot(...)null plot(X,Y) 当X, Y 都是实数一维数组,以 X 中元素为横坐标, Y 中元素为纵坐标作平面曲线。此时 X, Y 必须具有相同长度。 当 X, Y 都是实数二维数组,将 X 的列和 Y 相应的列相组合,绘制多条平面曲线。此时 X, Y 必须具有相同的维数。 当 X, Y 是复数数组时,忽略虚部,等效于:plot(real(X),real(Y))null 若 x 的长度与 Y 的行数相等,则将 x 与 Y 中的各列相对应,绘制多条平面曲线;
若 x 的长度与 Y 的列数相等,则将 x 与 Y 中的各行相对应,绘制多条平面曲线。 plot(x,Y) x 是一维数组, Y 是二维数组 plot(X,y) X 是二维数组, y 是一维数组 若 y 的长度与 X 的行数相等,则将 X 中的各列与 y 相对应,绘制多条平面曲线;
若 y 的长度与 X 的列数相等,则将 X 中的各行与 y 相对应,绘制多条平面曲线。nullplot(Y)x = 1:length(Y)
plot(x,Y)x = 1:size(Y,1)
plot(x,Y)当Y为复数数组时,等价于:当Y 是实数二维数组时,等价于:当Y 是实数一维数组时,等价于:plot(real(Y),imag(Y))null例:利用二维数组绘制图形:x = 0:0.1:2*pi
x = x'
X = [x, x, x ]
Y = [cos(x),2*cos(x),3*cos(x)]
plot(X,Y)
plot(X’,Y’)null线性代数中:
列 × 行 = 矩阵 n = 9
x = linspace(0,2*pi,50)
y = cos(x)’*(1:n)
plot(x,y)例:利用矩阵乘法生成绘图数据,并绘制图形:nullplot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec) 按照三个参数Xn, Yn, LineSpec画线,其中LineSpec指定了线型,点标记和画线的颜色,也可以混合使用三参数Xn,Yn,LineSpec和二参数Xn,Yn:
plot(X1,Y1,X2,Y2,LineSpec,X3,Y3)。LineSpec的三种属性可以全部指定,也可以只指定其中某一个或两个,排列顺序任意nullx = 0:0.2:2*pi;
y = sin(x);
plot(x,y,'r-o')x = 0:0.2:2*pi
y = sin(x)
plot(x,y,'ro')指定不指定线型的话,plot( )只绘制点标记nullplot(X1,Y1,LineSpec,‘PropertyName’,PropertyValue) 对plot生成的图形对象,用指定的properties进行设置。 Color 非
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
颜色可用[r,g,b]指定,r,g,b取0和1之间的数值
LineWidth 线宽
LineStyle 线型
Marker 点标记
MarkerEdgeColor marker的颜色(或 filled markers 边的颜色)
MarkerFaceColor the face of filled markers 的颜色
MarkerSize 点标记的大小PropertyNamenullx = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)nullplot(axes_handle, . . . ) 将图形绘制在由axes_handle指定的坐标系中。 x = 0:0.2:2*pi
h1 = axes('position',[0.05,0.1,0.4,0.4])
h2 = axes('position',[0.5,0.5,0.4,0.4])
plot(h1,x,x)
plot(h2,x,sin(2*x))axes( )是创建坐标轴的函数,后面会具体介绍。nullh = plot( . . . ) 返回图形对象的句柄。图形中的每条曲线都返回自己的句柄(是一个双精度数)。如有多条曲线,则有多个句柄,以列向量的形式返回至 h 。 句柄是图形对象的标识代码,标识代码含有图形对象的各种必要的属性信息,可用 get( ) 函数获取这些属性,用set( )函数设置(修改)属性。x = 0:0.2:2*pi
Y = [sin(x); 2*sin(2*x)]
h = plot(x,Y)
get(h(1))
set(h(1),'Color','r','LineWidth',1,'Marker','+')
set(h(2),'Color','g','LineWidth',2,'Marker','s')上机
练习
飞向蓝天的恐龙练习非连续性文本练习把字句和被字句的转换练习呼风唤雨的世纪练习呼风唤雨的世纪课后练习
上机练习3、对数坐标绘图3、对数坐标绘图loglog(Y)
loglog(X1,Y1,...)
loglog(X1,Y1,LineSpec,...)
loglog(...,'PropertyName',PropertyValue,...)
h = loglog(...)loglog( ) :作图时,x轴、y轴都使用常用对数刻度semilogx( ) x轴:常用对数刻度,y轴:线性刻度semilogy( ) x轴:线性刻度,y轴:常用对数刻度用法与plot( )函数完全相同loglog( ) 与 plot( ) 作图比较x = logspace(-1,2);
loglog(x,exp(x),'-s')
grid on x = logspace(-1,2);
plot(x,exp(x),'-s')
grid on loglog( ) 与 plot( ) 作图比较nullx = logspace(-1,2);
semilogx(x,exp(x),'-s')
grid on x = logspace(-1,2);
semilogy(x,exp(x),'-s')
grid on semilogx( ) 与 semilogy( )作图比较4、双y轴绘图:plotyy( )4、双y轴绘图:plotyy( )plotyy(X1,Y1,X2,Y2):
其中X1,Y1对应一条曲线,X2,Y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。
plotyy(X1,Y1,X2,Y2,'function')
使用由function指定的函数绘图,function可以是:plot, semilogx, semilogy, loglog, stem……
plotyy(X1,Y1,X2,Y2,'function1','function2')
使用由function1指定的函数作X1, Y1的图
使用有function2指定的函数作X2, Y2的图
[AX,H1,H2] = plotyy(...)
AX:存储两个Y轴的句柄,AX(1)为左Y轴的句柄,AX(2)为右Y轴的句柄。H1和H2分别为两个图形对象的句柄。 如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy( )绘图函数。 plotyy( )和plot( )作图比较plotyy( )和plot( )作图比较plotyy举例plotyy举例x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
title('Multiple Decay Rates')
xlabel('Time (\musec)')
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')5、极坐标系绘图:polar( )5、极坐标系绘图:polar( )polar(Q,r)
用极角theta和极径rho画出极坐标图形。theta是从x轴到指定矢量半径的夹角,单位为弧度,rho是数据空间单位指定的矢量半径的单位。
polar(Q,r,LineSpec) 参数LineSpec指定极坐标图中线条的线型、标记符号和颜色。 polar(axes_handle,...) 用坐标系axes_handle中绘图。 h = polar(...)
在h中返回图形对象的句柄。 polar( )接受极坐标形式的函数rho=f(theta),在笛卡尔坐标系平面上画出该函数,且在平面上画出极坐标形式的栅格。 polar( )绘图举例 t = 0:.01:2*pi;
polar(t,sin(2*t).*cos(2*t),'--r') t = 0:.01:2*pi; polar(t,sin(3*t).*cos(2*t),'--r')polar( )绘图举例 hold状态对polar( )绘图的影响hold状态对polar( )绘图的影响hold on
t = 0:.01:2*pi;
polar(t,sin(3*t).*cos(2*t),'--r')null你能用plot( )函数绘制出上面的极坐标图形吗?6、二维绘图函数汇总6、二维绘图函数汇总二、图形属性控制二、图形属性控制1、Matlab图形系统简介
2、根(Root)
3、图形窗口(Figure)
4、坐标轴(Axes)
5、保持图形:hold
6、subplot( )
7、图形标注:title( ), xlabel( ), text(), ...1、Matlab图形系统简介 Matlab的图形系统是面向对象的,图形对象之间的关系为父代与子代的关系1、Matlab图形系统简介null 每个图形对象都拥有自己的句柄 ( handle )。所有能创建图形对象的matlab函数都可给出所创建图形对象的句柄。null 图形对象是由其属性来描述的。高层绘图函数对图形对象的描述一般是缺省的或由高层绘图函数自动设置。底层绘图函数用句柄设置图形对象的属性。句柄属性的设置与修改
get 获得句柄图形对象的属性和返回某些对象的句柄值
set 改变图形对象的属性
delete(h) 删除句柄为h的图形对象
专用函数
gcf 返回当前窗口对象的句柄 Get Current Figure
gca 返回当前轴对象的句柄 Get Current Axes
gco 返回当前图形对象的句柄 Get Current Object
若一个对象的句柄已知,可以获取其“父”或“子”的句柄
f = get(h,’parent’);
l = get(h,’children’);2、根对象( Root ) 2、根对象( Root ) Root 是关联计算机屏幕的一个图形对象。Matlab系统只有一个Root象,它没有父对象,子对象是Figure。当启动Matlab时,Root对象就创建,用户无法再创建一个Root,也无法删除这个对象,Root的句柄值为 0。 root 的 属性root 的 ScreenSize 属性root 的 ScreenSize 属性ss = get(0,'ScreenSize')返回行向量 ss = [ left, bottom, width, height ]ScreenSize:只读属性,默认单位为像素( pixel ),由屏幕的左下角坐标、宽度、高度四个参数确定。以像素为单位,左下角点坐标为(1,1)以inches等为单位,左下角点坐标为(0,0)3、图形窗口 ( Figure)3、图形窗口 ( Figure) Figure对象是Matlab系统中显示的图形窗口。用户可建立任意多个Figure窗。所有Figure对象的父对象都是Root对象,而其他所有Matlab图形对象都是Figure的子对象。 figure( ):创建图形窗口
close( ):删除图形窗口
clf( ) :图形图形窗口中的子对象
gcf :返回当前窗口对象的句柄 创建图形窗口 :figure创建图形窗口 :figurefigure 利用缺省属性值来创建新的图形窗口对象。
figure(‘PropertyName’,propertyvalue,...) 利用指定的属性值来创建图形窗口对象。对于用户没有显式地定义的属性值,将其设置为默认的属性值。
figure(h) 如果句柄h所指示的图形窗口对象存在,则将其设置为当前窗口,并将其移动到屏幕的最前方。如果h所指示的图形窗口不存在且h是个整数 (h >= 1),则创建一个图形窗口,并将窗口的句柄设置为h;如果h不是整数,则返回错误信息。
h = figure(...) 返回图形窗口对象的句柄。 为了在一个已有的图形窗口中绘制图形,这个窗口必须是激活的,或者是当前的图形窗口。删除图形窗口:close1、close 删除当前figure,相当于close(gcf)
2、close(h) 删除由h确定的figure。如果h是一个向量或矩阵,就删除由h指定的所有图像
3、close name 删除指定名称的figure
4、close all 删除所有句柄没有隐藏的figure
5、close all hidden 删除所有figure,包括句柄隐藏的。
6、status = close(...) 如果指定的figure已经被删除则返回1,否则为0。删除图形窗口:close清除图形窗口中的子对象:clf清除图形窗口中的子对象:clf1、clf 删除当前图形窗口中、句柄未被隐藏(即它们的HandleVisibility属性为on)的图形对象。
2. clf(‘reset’) 或 clf reset删除当前图形窗口中的所有图形对象,无论其句柄是否被隐藏,同时将图形窗口的属性(除Position, Units, PaperPosition, PaperUnits外)恢复为默认值。 3、clf(fig) 或clf(fig,‘reset’) 清除由句柄为fig的图形窗口中的内容。 4、figure_handle = clf(...) 返回图形窗口的句柄,Figure 的一些属性Figure 的一些属性nullfigure 的 Position 属性Position由行向量 [ left, bottom, width, height ] 确定例:figure的Position, Color, … 属性例:figure的Position, Color, … 属性x = 0:pi/10:2*pi
ss = get(0,'ScreenSize')
W = ss(3);
H = ss(4);
figure(1)
set(gcf,'Position',[W/2,H/2,W/3,H/4])
set(gcf,'Name','sin(x)的图像','NumberTitle','off')
plot(x,sin(x))
h = figure
set(h,'Position',[W/2,H/10,W/3,H/4])
set(h,'Name','cos(x)的图像','Color',[1,1,1])
set(1,'Toolbar','none','Menubar','none')
plot(x,cos(x))nullfigure 的 NextPlot 属性x = 0:0.1:7
h = figure
plot(x,sin(x))x = 0:0.1:7
h = figure
set(h,'NextPlot','new')
plot(x,sin(x))4、坐标轴 (axes )4、坐标轴 (axes ) Axes对象:在图形窗口中定义一个画图区域,父对象是Figure,子对象包括line对象、image对象、patch对象、surface对象、light对象和text对象等。常用函数
axes( ):创建坐标轴
cla:清除坐标轴中的子对象
gca:返回当前轴对象的句柄
axis( ):设置坐标轴的常见属性
xlim( ) / ylim( ) / zlim( ):设置x / y / z 轴刻度范围
grid:设置坐标轴网格线的显示
box:设置坐标轴边框的显示
xlabel( ) / ylabel( ) / zlabel( ):设置x / y / z轴的标注创建坐标轴 axes( )axes 在当前figure内使用默认属性值来创建一个坐标轴对象。
axes(‘PropertyName’,propertyvalue,...) 创建具有指定的属性值的坐标轴对象。对于其它未明确指定的属性值,MATLAB采用这些属性的默认值。
axes(h) 当句柄为h的坐标轴对象存在时,设置该坐标轴为当前坐标轴,并使含有该坐标轴的图形窗口对象获得焦点。同时,将该坐标轴的句柄h 置于图形窗口的Children属性值的第一位,并把图形窗口的CurrentAxes属性值设置为h。当前坐标轴为用户用来绘制图像、线条、补片、矩形、曲面以及文本图形对象的目标坐标轴。如果用户想将坐标轴设置为当前坐标轴同时又不改变图形窗口的状态,则可以设置图形窗口的CurrentObject属性:set(figure_handle,‘CurrentAxes’,axes_handle), 这在一个图形窗口被最小化或者在其它窗口的后面,而用户又想设置它所包含的坐标轴为当前坐标轴时是非常有用的。
h = axes(...) 返回创建的坐标轴对象的句柄。创建坐标轴 axes( )axes 的一些属性axes 的一些属性nullaxes 的 Position 属性Position由行向量 [ left, bottom, width, height ] 确定 图形窗口内部采用归一化坐标,左下角坐标为(0,0),右上角坐标为(1,1)。 坐标轴的left, bottom , width, height这四个值都在0和1之间。nullaxes 的 NextPlot 属性例:设置坐标轴属性例:设置坐标轴属性figure
h1 = axes('position',[0.08,0.1,0.4,0.4])
h2 = axes('position',[0.6,0.1,0.35,0.7])
h3 = axes('position',[0.08,0.6,0.4,0.3])
set(h1,'Color',[0.5,0.5,0.5],'XColor',[1,0,0],'LineWidth',2)
set(h1,'TickDir','out','TickLength',[0.04,0.03])
set(h2,'TickLength',[0.06,0.02])Properties That Control the X-, Y-, or Z-AxisProperties That Control the X-, Y-, or Z-Axis例:XLim, XTick, XTickLabel设置clc
clear all
close all
figure
axes
set(gca,'fontsize',16)set(gca,'XLim',[0,6])s = get(gca,'XTickLabel')
s(1:2:end,:) = char(32)
set(gca,'XTickLabel',s)set(gca,'XTick',0:0.5:6)例:XLim, XTick, XTickLabel设置清除坐标轴中的子对象:cla清除坐标轴中的子对象:clacla:删除当前坐标系下的所有未设置隐藏的图形对象。
cla reset :删除当前坐标系下所有图形对象,不论是否设置了隐藏。同时将axes的属性(除Position, Units外)设置为默认值。
cla(ax) 或cla(ax,'reset') :清除由句柄ax所指坐标系。axis( ):设置坐标轴的常用属性axis( ):设置坐标轴的常用属性v = axis 返回包含当前坐标范围的行向量v, v具有四个或六个元素,这取决于当前坐标轴是二维的还是三维的。axis([xmin, xmax, ymin, ymax]) 2d
axis([xmin, xmax, ymin, ymax, zmin, zmax]) 3d
人工设置坐标范围,允许取 inf 或 –inf ,即坐标上限或下限时自动产生的,即坐标范围“半自动确定”。axis auto 基于x、y和z的最大值和最小值来自动设置坐标轴范围。用户可以只限定某一个坐标轴,如:axis ‘auto x’ 用来限定x轴的范围;axis 'auto yz' 用来限定y轴和z轴的范围。axis manual和axis(axis) 冻结当前坐标轴范围。如果打开了hold on命令,则后续的图形都使用同样的坐标范围。该函数设置XLimMode、YLimMode和ZLimMode属性为manual。nullaxis tight 采用紧密模式设置当前坐标轴范围,即以用户数据范围为坐标轴范围。
axis fill 设置坐标轴范围及PlotBoxAspectRatio属性使得坐标轴填充由 position 确定的矩形局域。
只有PlotBoxAspectRatioMode 或 DataAspectRatioMode属性值为 manual时,该方法才起作用。nullaxis equal 设置当前坐标轴的横纵轴具有相同的单位长度。 axis image 功能与axis equal相同。但坐标轴的边框紧贴在数据的四周。多用来显示图片。 axis square 调整坐标系的x、y和z轴,使它们有相同的长度。
axis normal 自动调整横纵轴比例,使图形显示达到最佳效果nullaxis vis3d 锁定坐标轴的纵横比,避免三维旋转时变化。
axis off 关闭所有坐标轴线、刻度标记和标签。
axis on 打开所有坐标轴线、刻度标记和标签。nullaxis ij 坐标系的原点设置到左上角。i 轴为垂直轴,正方向为从上到下。j 轴为水平轴,正方向为从左到右。
axis xy 坐标系的原点在左下角。x轴为水平坐标轴,正方向为从左到右,y轴为垂直坐标轴,正方向为从下到上。nullaxis(axes_handles,...) 将axis命令应用于指定的坐标轴对象。例如,下面的代码将两个坐标轴都设置为square
h1 = subplot(221);
h2 = subplot(222);
axis([h1 h2],'square')
[mode,visibility,direction] = axis('state') 返回三个字符串,用来表示坐标轴的当前属性值.
mode ' auto ' | ' manual '
visibility ' on ' | ' off '
direction ' xy ' | ' ij '
如果XLimMode、YLimMode和ZLimMode都设置为auto,则mode的值为auto;如果XLimMode、YLimMode和ZLimMode中有一个的值设为manual,则mode的值为manual。axis( )应用举例x = 0:.025:pi/2;
plot(x,tan(x),'-ro')x = 0:.025:pi/2;
plot(x,tan(x),'-ro')
axis([0 pi/2 0 5])axis( )应用举例xlim( ) / ylim( ) / zlim( )xlim( ) / ylim( ) / zlim( ) 当用户只想改变一个坐标轴的坐标限的时候,axis命令就显得很麻烦,这时可以使用xlim、ylim和zlim函数进行设置。xlim :返回包含x坐标范围的行向量
xlim([xmin xmax]) :设置x的坐标范围
xlim(‘mode’) : 返回x坐标的设置模式 ( auto 或 manual)lim(‘auto’):设置x坐标的模式为 auto.
xlim('manual') :设置x坐标的模式为 manual.
xlim(axes_handle,...) :设置指定的坐标轴的x坐标范围nullgridgrid on:对当前坐标系添加主要网格线。 grid off:对当前坐标系移除主要/细节网格线。 grid : 在grid on / grid off两个状态间切换。
grid(axes_handle,...) 对指定的坐标系设置网格线是否显示
grid minor : 对当前坐标系设置添加细节网格 nullboxbox on :当前坐标系的坐标轴框边界。
box off :当前坐标系不显示坐标轴边框。
box:切换当前坐标系坐标轴边框的显示。
box(axes_handle,...) :对指定的坐标系显示坐标轴开关。5、 保持图形:hold5、 保持图形:holdhold on:启动图形保持功能,当前坐标轴和图形都将保持,此后绘制的图形都将添加在这个图形的基础上,并且自动调整坐标轴的范围。hold on 就是将当前窗口和当前坐标轴的 ‘NextPlot’属性设置为‘add’ 。
hold all:启动图形保持功能,但不重置ColorOrder和 LineStyleOrder 两个属性。
hold off:关闭图形保持功能,将当前的窗口中的图形释放,用以绘制新的图形。hold off 就是将当前坐标轴的‘NextPlot’属性设置为‘replace’ 。
hold:在hold on/off两种状态之间进行切换。
hold(axes_handle,...) :在句柄指定的坐标轴上设置hold状态ishold:查询hold当前是on还是off,是hold on的话就返回逻辑1若不存在axes,hold命令会创建一个axes例:使用hold绘制多个图形例:使用hold绘制多个图形x = 0.1:0.5:4
y = sqrt(x)
plot(x,y,'r')
axis([-1,5,0,2.5])
hold on
plot(x,y,'bo','markersize',10)
plot(x,y,'b+','markersize',20)例
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
:利用hold实现简单的动画例题:利用hold实现简单的动画用plot( )函数动态演示利萨如图形的轨迹。……
… …
plot(x([1,2]),y([1,2]))
hold on
axis([-1.1,1.1,-1.1,1.1])
for k = 2:length(t)-1
plot(x([k,k+1]),y([k,k+1]))
pause(0.1)
end上机练习上机练习null第一题
t=0:0.1:4*pi
y=exp(-t/3).*sin(3*t)
yo=exp(-t/3)
y1=-exp(-t/3)
plot(t,y,'r-',t,yo,'y--',t,y1,'k-*')6、subplot( )6、subplot( )subplot(m,n,p) 将一个绘图窗口分割成 m行n列共m×n 个矩形绘图区域(每个区域有自己的坐标轴)并将第 p 个绘图区域选定为当前的绘图区域。编号从最上边一行开始 ,从左至右、从上至下依次编号。subplot(1,1,1) 回到默认的模式(整个图形窗口中只用一套坐标轴) 当一个新的subplot命令改变了图形窗口中绘图区域的数目的时候,原先的子图就被擦除掉。nullsubplot(m,n,p,‘replace’) 如果指定的axes已存在,则删除它,创建一个新的axes。
subplot(‘Position’,[left bottom width height]) 在当前图形窗口指定的Position上画图(创建坐标轴)
subplot(..., prop1, value1, prop2, value2, ...) 创立坐标系时,同时设置坐标系的相关属性。
h = subplot(...) 返回坐标系的句柄。
h = subplot(m,n,p) 返回第p个坐标轴的句柄
subplot(h) 设置句柄h对应的坐标轴为当前坐标轴。
nullsubplot(m,n,P) P是一个向量,表示向量P中指定的若干画图区域连成一个整体,包括那些被P跨越的画图区域。subplot(2,3,1)
subplot(2,3,2)
subplot(2,3,3)
subplot(2,3,4)
subplot(2,3,5:6)subplot(2,3,1)
subplot(2,3,3)
subplot(2,3,4)
subplot(2,3,6)
subplot(2,3,[2,5])subplot(2,3,1)
subplot(2,3,4)
subplot(2,3,[3,5,6])例:使用subplot( )例:使用subplot( ) x = -pi:pi/10:pi;
x = x';
Y = [sin(x),cos(x),x.^2,exp(x)];
for k = 1:4
subplot(2,2,k);
plot(x,Y(:,k));
end 先用subplot( )确定在哪一个区域中绘图,然后再使用其它的绘图函数。 被激活的绘图区域在用户输入另一个subplot或者figure命令之前会一直保持被激活状态。上机练习上机练习要求:
1、m、n分别取上表中的四个数值
2、绘制1秒内的运动轨迹,每隔0.001秒取一个点;
3、四种情况的运动轨迹绘制在一个图形窗口的四个坐标轴中,排成2行2列。某质点的位移由x(t)和y(t)确定,试绘制其运动轨迹nullm = [2,2,3,-3];
n = [3,-3,5,5];
t = 0:0.001:1;
for k = 1:4
x = 2*cos(20*m(k)*pi.*t) + cos(20*n(k)*pi.*t);
y = 2*sin(20*m(k)*pi.*t) + sin(20*n(k)*pi.*t);
subplot(2,2,k)
plot(x,y)
end上机练习上机练习nullv=0:0.1:2000;
m1=20.18*1.66e-27;
m2=39.94*1.66e-27;
T1=273
T2=500
k=1.381e-23
a=4*pi*(m1/2*pi*k*T1)^(3/2)*(exp(-m1*v.^2/(2*k*T1))).*v.^2;
b=4*pi*(m2/2*pi*k*T1)^(3/2)*(exp(-m2*v.^2/(2*k*T1))).*v.^2;
c=4*pi*(m1/2*pi*k*T2)^(3/2)*(exp(-m1*v.^2/(2*k*T2))).*v.^2;
d=4*pi*(m2/2*pi*k*T2)^(3/2)*(exp(-m2*v.^2/(2*k*T2))).*v.^2;
subplot(2,2,1)
axis([0.0,10,-0.01,0.03])
plot(v,a,'r',v,c,'b');
subplot(2,2,2)
plot(v,b,'r',v,d,'b');null7、图形标注7、图形标注legend( )
title( )
xlabel( ) / ylabel( ) / zlabel( )
text( )
使用TeX / LaTeX
nulllegend ( )legend(string1,string2, ...) 添加图例x = 0:0.05: 7
y1 = log10(x)
y2 = sin(x)
plot(x,y1,'b',x,y2,'r')
axis([0,7,-2,2])
legend('Log(x)','Sin(x)')nulltitle( )title(’text’) 添加标题例:xlabel( ) / ylabel( ) / zlabel( )xlabel(’text’) 添加 X 坐标轴标注
ylabel(’text’) 添加 Y 坐标轴标注
zlabel(’text’) 添加 Z 坐标轴标注例:xlabel( ) / ylabel( ) / zlabel( )nulltext( )text(x,y,string) 在点 (x,y) 处添加文本
text(x,y,string,'PropertyName',PropertyValue...)x = 0:0.05: 7
y = log10(x)
plot(x,y)
s = '\leftarrow Log(x)'
text(2, 0.2, s, 'fontsize',20)null使用TeX / LaTeX 在Matlab的text对象的函数中(函数 title、xlabel、ylabel、zlabel、text、legend),说明文字除使用标准的ASCII字符外,还可使用 TeX / LaTeX 格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。Matlab支持两个层次的 TeX ,通过 text的 Interpreter 属性来设置:
‘tex’ — 默认设置,支持 TeX 的一个子集
‘latex’ — 支持 LaTeX
‘none’ — 不支持 TeX是D.E.Knuth 开发的免费的功能强大的排版系统,是公认的数学公式排得最好的系统。
LaTeX是由L.Lamport编写的一个目前最流行的TeX宏包(宏集、扩展),特别适合数学类论文、书籍的排版,也可以排版普通的文章和书籍。TeX Character SequenceTeX Character Sequencenull\bf:设置字体为粗体字。
\it:设置字体为斜体字。
\sl:设置字体为斜体字,很少使用。
\rm:设置字体为正常字体。
\fontname{字体名}:设置字体名。例如:\fontname{宋体}
\fontsize{字体大小}:设置字体大小。例如:\fontsize{16}
_{下标} 表示下标,若下标只有一个字符,可省略{ }
^{上标} 表示上标,若上标只有一个字符,可省略{ }Tex字符的字体设置null例:使用TeX输入数学表达式title('{\itAe}^{-\alpha\itt}sin\beta{\itt} \alpha<<\beta') xlabel('Time \musec.')
ylabel('Amplitude') null\color{颜色名}颜色名
颜色名有12种,分别为red、green、yellow、magenta、blue、black、white、cyan、gray、barkGreen、orange和lightBlue。
例如:\color{magenta}magenta
\color[rgb]{a b c}
设置字体颜色为RGB矩阵[a b c]所表示的颜色。 a、b和c都在[0 1] 范围内。
例如:color[rgb]{0 .5 .5}Tex字符的颜色设置nullstr = '黑{\color{red}红\color{green}绿\color[rgb]{0 0 1}蓝}黑'
text(0.1,0.5,str,'fontsize',24,'fontname','黑体')例:使用TeX指定字符颜色使用Latex\( LaTeX命令 \)
$ LaTeX命令$
$$ LaTeX命令$$在matlab中,使用Latex命令可用下面的方法: s1 = '$y_1=e^xsin(x)$'
s2 = '$$y_2=\frac{1}{2}\sqrt[3]{x}$$'
str = char(s1,s2)
text(0.2, 0.5, str, 'Interpreter', 'latex', 'FontSize',16)使用Latexlegend( )函数必须先获得句柄,才可以设置Interpreter属性
h = legend(str1, str2, … )
set(h,'interprete','latex')常用 LaTeX 命令上标用 ^{上标},下标用 _{下标},希腊字母与TeX一样,用 \alpha 等表示
分式 $$\frac{分子}{分母}$$
根式 $$\sqrt{x}$$ 、$$\sqrt[n]{x}$$
求和 $$\sum_{i=1}^{n} x_{i}$$
积分 $$\int_{0}^{1}$$
偏微分 $$ \frac { \partial{y} } { \partial{x} } $$
极限 $$\lim_{n \rightarrow \infty}$$ %n趋于无穷符号在lim正下方
$\lim_{n \rightarrow \infty}$ %n趋于无穷符号在lim右下角
上划线 $$\overline{x}$$
下划线 $$\underline{x}$$ %下划线在x的正下方
卧式花括号命令 $$\overbrace{x+y+z+w}$$
仰式花括号命令 $$a+\underbrace{b+c+d} $$常用 LaTeX 命令更多的 LaTeX 命令请参考相关的 LaTeX 资料三、3d绘图三、3d绘图1、三维曲线: plot3( )
2、二维数据网格:meshgrid( )
3、三维网格图: mesh( ) / meshc( ) / meshz( )
4、三维表面图: surf( )/surfc( ) /
5、利用surf( )绘制一些常见的三维表面图
6、三维绘图函数汇总1、三维曲线: plot3( )plot3(X1,Y1,Z1,...)
plot3(X1,Y1,Z1,LineSpec,...)
plot3(...,'PropertyName',PropertyValue,...)
h = plot3(...)1、三维曲线: plot3( )plot3( )的用法与plot( )类似,只是多了一个 Z 数组。t=[0:0.2:10*pi];
x=2*t;
y=sin(t);
z=cos(t);
plot3(x,y,z,'bo');
hold on
plot3(x,y,z,'r-','LineWidth',2)用plot3( )同时绘制多条3d曲线用plot3( )同时绘制多条3d曲线 当X,Y,Z为同维的二维数组,plot3( )将 X 、Y、Z 相应的列相组合,绘制多条3d曲线。例:使用plot3( )绘制长方体的线框图例:使用plot3( )绘制长方体的线框图L = 100*randn(1);
W = L*randn(1);
H = W*randn(1);
A = randn(1,3);
B = A + [L,0,0];
C = B + [0,W,0];
D = A + [0,W,0];
A_A = [A;B;C;D;A];
a_a = A_A + repmat([0,0,H],5,1);
X = [A_A(:,1),a_a(:,1)];
Y = [A_A(:,2),a_a(:,2)];
Z = [A_A(:,3),a_a(:,3)];
plot3(X,Y,Z,'b')
hold on
plot3(X',Y',Z','b')长度平行于X轴,宽度平行于Y轴,高度平行于Z轴,A为3d空间任意点
均随机生成。绘图思路(供参考):
绘制空间曲线
A-B-C-D-A
a-b-c-d-a
A-a
B-b
C-c
D-d 练习:用plot3( )绘制正棱柱(台、椎)的线框图练习:用plot3( )绘制正棱柱(台、椎)的线框图为简单起见,设:中心轴与 Z 轴平行,顶面与底面平行于XOY平面,正多边有个顶点的投影在X轴上设:底面正多边形的外接圆中心为C=[Cx,Cy,Cz] ,半径为R ,边数为N,顶面外接圆半径为r,棱柱高度为H。
t = 0:2*pi/N:2*pi
则底面各顶点的坐标为:
x = Cx + R*cos t y = Cy + R*sin t z = Cz*ones(size(t))
则顶面各顶点的坐标为:
x = Cx + r*cos t y = Cy + r*sin t z = ( Cz + H )*ones(size(t))绘图思路(供参考):
绘制空间曲线
底面多变形
顶面多边形
各条棱
nullx = ( -4:0.5:4 )'
y = ( -4:0.5:4 )'
z = sin(sqrt(x.^2+y.^2))
h = plot3(x,y,z,'-bo')
set(h,'MarkerEdgeColor','r')nullx = -4:0.5:4
y = ( 4:-0.5:-4 )'
X = repmat(x,length(y),1)
Y = repmat(y,1,length(x))[X, Y] = meshgrid(x, y)2、二维数据网格: meshgrid( )2、二维数据网格: meshgrid( ) [X,Y] = meshgrid(x,y) 由向量 x 和 y 生成二维数组X和Y,用来计算二元函数 f(x,y)的值Z = f(X,Y)。二维数组X,Y,Z可用来绘制三维曲线、三维网格图、三维曲面图等。 输出数组 X 中的行向量相当于向量 x ,输出数组 Y 中的列向量相当于向量 y 。
[X,Y] = meshgrid(x) 等价于[X,Y] = meshgrid(x,x)。 nullx = -4:0.5:4
y = -4:0.5:4
[X,Y] = meshgrid(x,y)
Z = sin(sqrt(X.^2+Y.^2))
subplot(2,2,1)
plot3(X,Y,Z,'bo')
subplot(2,2,2)
plot3(X,Y,Z,'b')
subplot(2,2,3)
plot3(X',Y',Z','b')
subplot(2,2,4)
plot3(X,Y,Z,'b',X',Y',Z','b')X =
-4.0000 -3.5000 … 3.5000 4.0000
-4.0000 -3.5000 … 3.5000 4.0000
… … … … …
-4.0000 -3.5000 … 3.5000 4.0000
-4.0000 -3.5000 … 3.5000 4.0000Y =
-4.0000 -4.0000 … -4.0000 -4.0000
-3.5000 -3.5000 … -3.5000 -3.5000
… … … … …
3.5000 3.5000 … 3.5000 3.5000
4.0000 4.0000 … 4.0000 4.0000Z =
-0.5862 -0.8238 … -0.8238 -0.5862
-0.8238 -0.9720 … -0.9720 -0.8238
… … … … …
-0.8238 -0.9720 … -0.9720 -0.8238
-0.5862 -0.8238 … -0.8238 -0.5862绘制第1条 3d曲线绘制第2条 3d曲线nullnullmesh(X,Y,Z):绘制由数组 X,Y,Z 所确定的曲面的网格图
X,Y,Z 都为二维数组时,要求它们的维数相同。X,Y 也可以是向量,但 Z 必须为二维数组, [m,n] = size(Z),此时必须满足:length(X) = n 且 length(Y) = m。
mesh(Z): 相当于X = 1:n ,Y = 1:m,其中 [m,n] = size(Z)
mesh(...,C):二维数组C确定网格颜色,省略C时相当于 C=Z
mesh(...,‘PropertyName’,PropertyValue,...):设置属性值
me