/matlab可视化/
不管根据计算得到的数据堆或是符号堆是多么的准确,人们还是很难从这一大堆原始的 数据和符号中发现它们的具体物理含义或是内在规律,而数据图形恰能使视觉感官直接感受 到数据的许多内在本质,发现数据的内在联系。因此数据可视化是一项非常重要的技术。 MATLAB 可以表达出数据的二维、三维和四维的图形。通过对图形的线型、立面、色彩、 光线、视角等属性的控制,可把数据的内在特征表现得更加细腻完善。下面将向读者介绍这 些图形绘制和图形处理的命令
不管根据计算得到的数据堆或是符号堆是多么的准确,人们还是很难从这一大堆原始的 数据和符号中发现它们的具体物理含义或是内在规律,而数据图形恰能使视觉感官直接感受 到数据的许多内在本质,发现数据的内在联系。因此数据可视化是一项非常重要的技术。 MATLAB 可以表达出数据的二维、三维和四维的图形。通过对图形的线型、立面、色彩、 光线、视角等属性的控制,可把数据的内在特征表现得更加细腻完善。下面将向读者介绍这 些图形绘制和图形处理的命令
二维绘图
plot(y) y为实数矩阵或复数向量
plot(y) y为实数矩阵或复数向量
- 实线 . 点 : 点线 o 圆 -. 点划线 + 加号 -- 虚线 * 星号 y 黄色 x x 符号 m 紫红色 s 方形 c 蓝绿色 d 菱形 r 红色 v 下三角 g 绿色 ^ 上三角 b 蓝色 < 左三角 w 白色 > 右三角 k 黑色 p 正五边形
plot(x,y,’-.rd’)
fplot 命令用于指导如何通过函数来取得绘图 的数值点矩阵。该命令通过内部的自适应算法来动态决定自变量的取值间隔,当函数值变化 缓慢时,间隔取大一点;变化剧烈时(即函数的二阶导数很大),间隔取小一点
fplot(function,limits)
fplot(function,limits,LineSpec)
fplot(function,limits,tol)
fplot(function,limits,tol,LineSpec)
fplot(function,limits,n)
fplot(axes_handle,...)
[X,Y] = fplot(function,limits,...)
[...] = fplot(function,limits,tol,n,LineSpec,P1,P2,...)
fplot(function,limits)
fplot(function,limits,LineSpec)
fplot(function,limits,tol)
fplot(function,limits,tol,LineSpec)
fplot(function,limits,n)
fplot(axes_handle,...)
[X,Y] = fplot(function,limits,...)
[...] = fplot(function,limits,tol,n,LineSpec,P1,P2,...)
ezplot 命令也是用于绘制函数在某一自变量区域内的图形。该命令的使用格式如下:
ezplot(f)
ezplot(f,[min,max])
ezplot(f,[xmin,xmax,ymin,ymax])
ezplot(x,y)
ezplot(x,y,[tmin,tmax])
ezplot(...,figure_handle)
ezplot(axes_handle,...)
h = ezplot(...)
三维绘图
最常用的三维绘图是绘制三维曲线图、三维网格图和三维曲面图 3 种基本类型, 相应的 MATLAB 命令为 plot3、mesh 和 surf
plot3(X1,Y1,Z1,...)
plot3(X1,Y1,Z1,LineSpec,...)
plot3(...,’PropertyName’,PropertyValue,...)
h=plot3(...)
最常用的三维绘图是绘制三维曲线图、三维网格图和三维曲面图 3 种基本类型, 相应的 MATLAB 命令为 plot3、mesh 和 surf
plot3(X1,Y1,Z1,...)
plot3(X1,Y1,Z1,LineSpec,...)
plot3(...,’PropertyName’,PropertyValue,...)
h=plot3(...)
例如用 plot3 命令绘制螺旋线,
>>t=0:pi/50:10*pi;
>>plot3(cos(t),sin(t),t)
例如用 plot3 命令绘制向量
>>t=[0:pi/100:2*pi];
>>x=[sin(t) sin(t)];
>>y=[cos(t) cos(t)];
>>z=[(sin(t)).^2+(cos(t)).^2 (sin(t)).^2+(cos(t)).^2+1];
>>plot3(x,y,z)
>>t=0:pi/50:10*pi;
>>plot3(cos(t),sin(t),t)
例如用 plot3 命令绘制向量
>>t=[0:pi/100:2*pi];
>>x=[sin(t) sin(t)];
>>y=[cos(t) cos(t)];
>>z=[(sin(t)).^2+(cos(t)).^2 (sin(t)).^2+(cos(t)).^2+1];
>>plot3(x,y,z)
mesh命令与 plot3 不同的是它可以绘出在某一区间内完整的曲面,而不是单根曲线
mesh(X,Y,Z)
mesh(Z)
mesh(...,C)
mesh(...,’PropertyName’,PropertyValue,...)
mesh(axes_handles,...)
h = mesh(...)
hsurface = mesh(’v6’...)
mesh(X,Y,Z)
mesh(Z)
mesh(...,C)
mesh(...,’PropertyName’,PropertyValue,...)
mesh(axes_handles,...)
h = mesh(...)
hsurface = mesh(’v6’...)
例如用 mesh 函数绘制三维曲线
>>x=-4:0.1:4;y=x’;
>>m=ones(size(y))*x;
>>n=y* ones(size(x))
>>p=sqrt(m.^2+n.^2)+eps;
>>z=sin(p)./p
>>mesh(z)
例如用 mesh(z)函数绘制三维曲面
>>x=[0:0.1:5;2:0.1:7];
>>mesh(x)
>>x=-4:0.1:4;y=x’;
>>m=ones(size(y))*x;
>>n=y* ones(size(x))
>>p=sqrt(m.^2+n.^2)+eps;
>>z=sin(p)./p
>>mesh(z)
例如用 mesh(z)函数绘制三维曲面
>>x=[0:0.1:5;2:0.1:7];
>>mesh(x)
surf 命令
该命令的调用方法与 mesh 命令类似,不同的是 mesh 函数绘制的图形是一个网格图,而 surf 命令绘制得到的是着色的三维曲面。着色的方法是在得到相应的网格后,对每一个网格 依据该网格所代表的节点的色值(由变量 C 控制)来定义这一网格的颜色
surf(Z)
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(...,’PropertyName’,PropertyValue)
surf(axes_handle,...)
h = surf(...)
hsurface = surf(’v6’,...)
该命令的调用方法与 mesh 命令类似,不同的是 mesh 函数绘制的图形是一个网格图,而 surf 命令绘制得到的是着色的三维曲面。着色的方法是在得到相应的网格后,对每一个网格 依据该网格所代表的节点的色值(由变量 C 控制)来定义这一网格的颜色
surf(Z)
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(...,’PropertyName’,PropertyValue)
surf(axes_handle,...)
h = surf(...)
hsurface = surf(’v6’,...)
例如分别用 surf 命令和 mesh 命令绘制着色曲面图进行比较,
特殊三维曲面:
meshgrid、meshc 和 meshz
meshgrid 命令的作用是将给定的区域按一定的方式划分成平面网格,该平面网格可以用 来绘制三维曲面 [X,Y]=meshgrid(x,y)
meshgrid实例:
[X,Y]=meshgrid(x,y)
meshc实例
>>[X,Y,Z] = peaks(30);
>> meshc(Z)
meshz实例
>>[X,Y,Z] = peaks(30);
>> meshz(Z)
meshgrid 命令的作用是将给定的区域按一定的方式划分成平面网格,该平面网格可以用 来绘制三维曲面 [X,Y]=meshgrid(x,y)
meshgrid实例:
[X,Y]=meshgrid(x,y)
meshc实例
>>[X,Y,Z] = peaks(30);
>> meshc(Z)
meshz实例
>>[X,Y,Z] = peaks(30);
>> meshz(Z)
surfc
surfc 与 meshc 类似,在 surf 命令绘制的图形上加绘等高线,调用方式与 surf 命令一样。 例如用 surfc 命令绘制三维曲面
>>[X,Y,Z] = peaks(30);
>> surfc(Z)
surfc 与 meshc 类似,在 surf 命令绘制的图形上加绘等高线,调用方式与 surf 命令一样。 例如用 surfc 命令绘制三维曲面
>>[X,Y,Z] = peaks(30);
>> surfc(Z)
waterfall
该命令用于绘制形似瀑布流水形状的网线图,调用格式与 mesh 相同
例如用 waterfall 命令绘制三维曲面
>>[X,Y,Z] = peaks(30);
>> waterfall(Z)
该命令用于绘制形似瀑布流水形状的网线图,调用格式与 mesh 相同
例如用 waterfall 命令绘制三维曲面
>>[X,Y,Z] = peaks(30);
>> waterfall(Z)
特殊图形
二维特殊图形函数
area 填充绘图 fplot 函数绘制 bar 条形图 hist 柱状图 barh 水平条形图 pareto Pareto 图 comet 彗星图 pie 饼状图 errorbar 误差带图 plotmatrix 分散矩阵绘制 ezplot 简单绘制函数图 ribbon 三维图的二维条状显示 ezpolar 简单绘制极坐标图 scatter 散射图 feather 矢量图 stem 离散序列火柴杆状图 fill 多边形填充 stairs 阶梯图 gplot 拓扑图 rose 极坐标系下的柱状图 compass 与 feather 功能类似的矢量图 quiver 向量场
【bar 命令】 该命令用于绘制二维垂直条形图,用垂直条形显示向量或矩阵中的值。
bar(y) //为每一个 y 中的元素画一个条状 bar(x,y) //在指定的横坐标 x 上画出 y,其中 x 为严格单增的向量。若 y 为矩阵,则 bar 把矩阵分解成 几个行向量,在指定的横坐标处分别画出。
bar(...,width) //设置条形的相对宽度和控制在一组内条形的间距。默认值为 0.8,所以如果用户没有指 定 x,则同一组内的条形有很小的间距,若设置 width 为 1,则同一组内的条形相互接触 bar(...,’style’) //style 定义条的形状类型,可以取值’group’或’stack’。其中“group”为默认的显示模式。 “group”表示若 y 为 n*m 阶的矩阵,则 bar 显示 n 组,每组有 m 个垂直条形的条形图。“stack”表示对矩阵 y 的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和。其中同一条形中的每个分量用不 同的颜色显示出来,从而可以显示每个分量在向量中的分布 bar(...,’bar_color’) //’bar_color’定义条的颜色
bar(axes_handle,...) h = bar(⋯) //返回一个 patch 图形对象句柄的向量。每一条形对应一个句柄
实例:
>>x=-2.9:0.2:2.9;
实例:
>>Y = round(rand(5,3)*10);
>>subplot(2,2,1)
>>bar(Y,’group’)
>>title ’Group’
>>subplot(2,2,2)
>>bar(Y,’stack’)
>>title ’Stack’
>>subplot(2,2,3)
>>barh(Y,’stack’)
>>title ’Stack’
>>subplot(2,2,4)
>>bar(Y,1.5)
>>title ’Width = 1.5’
【pie 命令】 该命令用于绘制饼形图
pie(x) pie(x, explode) // explode 与 x 同维的矩阵,若其中有非零元素,x 矩阵中的相应位置的元素在饼图中 对应的扇形将向外移出一些,加以突出 pie(...,labels) // labels 用于定义相应块的标签
pie(axes_handle,...)
h = pie(...)
实例
>>x = [1 3 0.5 2.5 2];
>>explode = [0 1 0 0 0];
>>pie(x,explode)
>>bar(x,exp(-x.*x),’r’)
pie(axes_handle,...)
h = pie(...)
实例
>>x = [1 3 0.5 2.5 2];
>>explode = [0 1 0 0 0];
>>pie(x,explode)
>>bar(x,exp(-x.*x),’r’)
【hist 命令】 该命令用于绘制二维条形直方图,可以显示出数据的分布情况。所有向量 y 中的元素或 者是矩阵 y 的列向量中的元素是根据它们的数值范围来分组的,每一组作为一个条形进行显 示。条形直方图中的 x 轴反映了数据 y 中元素数值的范围,直方图的 y 轴显示出参量 y 中的 元素落入该组的数目
实例
>>x = -2.9:0.1:2.9;
>>y = randn(10000,1);
>>hist(y,x)
实例
>>x = -2.9:0.1:2.9;
>>y = randn(10000,1);
>>hist(y,x)
【contour 命令】 该命令用于绘制等高线图。
实例
>>[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
>>Z = X.*exp(-X.^2-Y.^2);
>>[C,h] = contour
>>set(h,’ShowText’,’on’,’TextStep’,get(h,’LevelStep’)*2)
实例
>>[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
>>Z = X.*exp(-X.^2-Y.^2);
>>[C,h] = contour
>>set(h,’ShowText’,’on’,’TextStep’,get(h,’LevelStep’)*2)
【quiver 命令】 该命令用于绘制矢量图或速度图,绘制向量场的形状。
实例
>>[X,Y] = meshgrid(-2:.2:2);
>>Z = X.*exp(-X.^2 - Y.^2);
>>[DX,DY] = gradient(Z,.2,.2);
>>contour(X,Y,Z)
>>hold on
>>quiver(X,Y,DX,DY)
实例
>>[X,Y] = meshgrid(-2:.2:2);
>>Z = X.*exp(-X.^2 - Y.^2);
>>[DX,DY] = gradient(Z,.2,.2);
>>contour(X,Y,Z)
>>hold on
>>quiver(X,Y,DX,DY)
【comet 命令】 该命令用于绘制二维彗星图。彗星图为彗星头(一个小圆圈)沿着数据点前进的动画, 彗星体为跟在彗星头后面的痕迹,轨道为整个函数的实线。要注意的是,由命令 comet 生成 的轨迹图的擦除模式(EraseMode)属性值为 none,该属性使得用户不能打印该图形(只能 得到彗星头),且当用户改变窗口的大小时,动画将消失
【示例】
>>t = 0:.01:2*pi;
>>x = cos(2*t).*(cos(t).^2);
>>y = sin(2*t).*(sin(t).^2);
>>comet(x,y);
【示例】
>>t = 0:.01:2*pi;
>>x = cos(2*t).*(cos(t).^2);
>>y = sin(2*t).*(sin(t).^2);
>>comet(x,y);
【errorbar 命令】 该命令用于绘制沿着一曲线画误差棒形图。误差棒为数据的置信水平或者为沿着曲线的 偏差。命令输入参数为矩阵时,则按列画出误差棒
>>x=[0:0.2:4*pi];
>>y=sin(x);
>>e=[0:1/(length(x)-1):1];
>>errorbar(x,y,e)
>>x=[0:0.2:4*pi];
>>y=sin(x);
>>e=[0:1/(length(x)-1):1];
>>errorbar(x,y,e)
特殊的三维图形函数
bar3 三维条形图 surfc 着色图与等高线图结合 comet3 三维彗星轨迹图 trisurf 三角形表面图 ezgraph3 函数控制绘制三维图 trimesh 三角形网格图 pie3 三维饼状图 waterfall 瀑布图 scatter3 三维散射图 cylinder 柱面图 stem3 三维离散数据图 sphere 球面图 quiver3 向量场 contour3 三维等高线
bar3 三维条形图 surfc 着色图与等高线图结合 comet3 三维彗星轨迹图 trisurf 三角形表面图 ezgraph3 函数控制绘制三维图 trimesh 三角形网格图 pie3 三维饼状图 waterfall 瀑布图 scatter3 三维散射图 cylinder 柱面图 stem3 三维离散数据图 sphere 球面图 quiver3 向量场 contour3 三维等高线
cylinder 命令】 该命令用于绘制圆柱图形。
实例
>>cylinder
实例
>>t = 0:pi/10:2*pi;
>>[X,Y,Z] = cylinder(2+cos(t));
>>surf(X,Y,Z)
实例
>>cylinder
实例
>>t = 0:pi/10:2*pi;
>>[X,Y,Z] = cylinder(2+cos(t));
>>surf(X,Y,Z)
【sphere 命令】 该命令用于生成球体
实例
>>[m,n,p]=sphere(50);
>>t=abs(p);
>>surf(m,n,p,t)
实例
>>[m,n,p]=sphere(50);
>>t=abs(p);
>>surf(m,n,p,t)
特殊坐标轴的图形函数
前面已介绍了基本的二维绘图函数的使用,但它们的坐标轴刻度均为线性刻度。当实际 的数据出现指数变化时,指数变化就不能直观的从图形上体现出来,而且在进行数值比较过 程中经常会遇到双纵坐标显示的要求。为了解决这些问题,MATLAB 提供了相应的绘图函数
前面已介绍了基本的二维绘图函数的使用,但它们的坐标轴刻度均为线性刻度。当实际 的数据出现指数变化时,指数变化就不能直观的从图形上体现出来,而且在进行数值比较过 程中经常会遇到双纵坐标显示的要求。为了解决这些问题,MATLAB 提供了相应的绘图函数
semilogx
用该函数绘制图形时 x 轴采用对数坐标。若没有指定使用的颜色,当所画线条较多时, semilogx 将自动使用由当前轴的 ColorOrder 和 LineStyleOrder 属性指定的颜色顺序和线型顺 序来画线。调用方法如下
实例
>>x=0.001:0.01*pi:2*pi;
>>y=log10(x);
>> semilogx(x,y,’-*’);
>>figure;
>>plot(x,y)
用该函数绘制图形时 x 轴采用对数坐标。若没有指定使用的颜色,当所画线条较多时, semilogx 将自动使用由当前轴的 ColorOrder 和 LineStyleOrder 属性指定的颜色顺序和线型顺 序来画线。调用方法如下
实例
>>x=0.001:0.01*pi:2*pi;
>>y=log10(x);
>> semilogx(x,y,’-*’);
>>figure;
>>plot(x,y)
.semilogy
用该函数绘制图形时 y 轴采用对数坐标。调用格式与 semilogx 基本相同
实例
>>x=0.001:0.01*pi:2*pi;
>>y=10.^x;
>> semilogy(x,y,’-*’);
>>figure;
>>plot(x,y)
用该函数绘制图形时 y 轴采用对数坐标。调用格式与 semilogx 基本相同
实例
>>x=0.001:0.01*pi:2*pi;
>>y=10.^x;
>> semilogy(x,y,’-*’);
>>figure;
>>plot(x,y)
.loglog
用该函数绘制图形时 x 和 y 轴均采用对数坐标
实例
>>m =0.001:0.01*pi:2*pi;
>>x=10.^m;
>>y=log10(m);
>>loglog(x,y,’-*’);
>>figure
>>plot(x,y,’-.r’)
用该函数绘制图形时 x 和 y 轴均采用对数坐标
实例
>>m =0.001:0.01*pi:2*pi;
>>x=10.^m;
>>y=log10(m);
>>loglog(x,y,’-*’);
>>figure
>>plot(x,y,’-.r’)
plotyy
用该函数在双 y 轴坐标系中作图
实例
>>x=0:0.01*pi:2*pi;
>>y=sin(x);
>>z=exp(x);
>>plotyy(x,y,x,z,’plot’,’semilogy’)
用该函数在双 y 轴坐标系中作图
实例
>>x=0:0.01*pi:2*pi;
>>y=sin(x);
>>z=exp(x);
>>plotyy(x,y,x,z,’plot’,’semilogy’)
【polar 命令】 该命令用于画极坐标图。它接受极坐标形式的函数 rho=f(θ),在笛卡尔坐标系平面上画 出该函数,且在平面上画出极坐标形式的格栅。
实例
>>rho0=1;
>>theta=0:pi/20:4*pi;
>>rho=rho0+theta*rho0;
>>polar(theta,rho,’:’)
实例
>>rho0=1;
>>theta=0:pi/20:4*pi;
>>rho=rho0+theta*rho0;
>>polar(theta,rho,’:’)
【pol2cart 命令】 该命令用于将极坐标值或柱坐标值转换成直角坐标系下的坐标值,其转换规则如图 5-41 所示。然后使用 plot3、mesh 等命令绘图,即在直角坐标系下绘制使用柱坐标值描述的图形。
实例
>>theta=0:pi/20:2*pi;
>>rho=sin(theta);
>>[t,r]=meshgrid(theta,rho);
>>z=r.*t;
>>[X,Y,Z]=pol2cart(t,r,z);
>>mesh(X,Y,Z)
实例
>>theta=0:pi/20:2*pi;
>>rho=sin(theta);
>>[t,r]=meshgrid(theta,rho);
>>z=r.*t;
>>[X,Y,Z]=pol2cart(t,r,z);
>>mesh(X,Y,Z)
【sph2cart 命令】 该命令用于将球坐标值转换成直角坐标系下的坐标值,其转换规则如图 5-43 所示。然后 使用 plot3、mesh 等命令绘图,即在直角坐标系下绘制使用球坐标值描述的图形
实例
实例
cart2pol 命令】 该命令用于将直角坐标系下的坐标值转换成极坐标系和柱坐标系下的坐标值,转换规则
THETA,RHO,Z] = cart2pol(X,Y,Z)
[THETA,RHO] = cart2pol(X,Y)
【cart2sph 命令】 该命令用于将直角坐标系下的坐标值转换成球坐标系下的坐标值,转换规则
THETA,PHI,R] = cart2sph(X,Y,Z)
MATLAB 通过颜色来表示这存在于第四维空间的值,它由函数 slice 实现。若要显示颜色和所代表数值(在上例中即指 V 的函数值)的关系,可以通过 colorbar 函 数命令来显示。
实例
>>[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
>>v = x.*exp(-x.^2-y.^2-z.^2);
>>xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];
>>slice(x,y,z,v,xslice,yslice,zslice)
>>colormap hsv
图形处理
MATLAB 7.0 除了提供强大的绘图功能外,它还提供了强大的图形处理的功能
MATLAB 7.0 除了提供强大的绘图功能外,它还提供了强大的图形处理的功能
.坐标轴标注和图形标题
对坐标轴进行标注和给图形填加标题的函数主要有 xlabel、ylabel、zlabel 和 title 等,它 们的调用格式基本相同
xlabel(’string’)
xlabel(...,’PropertyName’,PropertyValue,...)
xlabel(fname)
ylabel(’string’)
ylabel(fname)
zlabel(’string’)
zlabel(fname)
title(’string’)
title(...,’PropertyName’,PropertyValue,...)
title(fname)
实例
>>x=1:0.1*pi:2*pi;
>>y=sin(x);
>>plot(x,y)
>>xlabel(’x(0-2\pi)’,’fontweight’,’bold’);
>>ylabel(’y=sin(x)’,’fontweight’,’bold’); >>title(’正弦函数’,’fontsize’,12,’fontweight’,’bold’,’fontname’,’隶书’)
对坐标轴进行标注和给图形填加标题的函数主要有 xlabel、ylabel、zlabel 和 title 等,它 们的调用格式基本相同
xlabel(’string’)
xlabel(...,’PropertyName’,PropertyValue,...)
xlabel(fname)
ylabel(’string’)
ylabel(fname)
zlabel(’string’)
zlabel(fname)
title(’string’)
title(...,’PropertyName’,PropertyValue,...)
title(fname)
实例
>>x=1:0.1*pi:2*pi;
>>y=sin(x);
>>plot(x,y)
>>xlabel(’x(0-2\pi)’,’fontweight’,’bold’);
>>ylabel(’y=sin(x)’,’fontweight’,’bold’); >>title(’正弦函数’,’fontsize’,12,’fontweight’,’bold’,’fontname’,’隶书’)
在标注过程中经常会遇到特殊符号的输入问题,如上例中 pi 的输入,MATLAB 语言提 供了相应的字符转换
控制字符串 转换字符串 控制字符串 转换字符串 \alpha α \lambda λ \beta β \mu μ \gamma γ \xi ξ \delta δ \pi π \epsilon ε \omega ω \zeta ζ \tau τ \eta η \sigma ∑ \theta θ \kappa κ \leftarrow ← \uparrow ↑
• \bf:黑体; • \it:斜体; • \sl:透视。 • \rm:标准形式; • \fontname{fontname}:定义标注文字的字体; • \fontsize{fontsize}:定义标注文字的字体大小。
控制字符串 转换字符串 控制字符串 转换字符串 \alpha α \lambda λ \beta β \mu μ \gamma γ \xi ξ \delta δ \pi π \epsilon ε \omega ω \zeta ζ \tau τ \eta η \sigma ∑ \theta θ \kappa κ \leftarrow ← \uparrow ↑
• \bf:黑体; • \it:斜体; • \sl:透视。 • \rm:标准形式; • \fontname{fontname}:定义标注文字的字体; • \fontsize{fontsize}:定义标注文字的字体大小。
图形文字标记
实例
>>x=1:0.1*pi:2*pi;
>>y=sin(x);
>>plot(x,y)
>>xlabel(’x(0-2\pi)’,’fontweight’,’bold’);
>>ylabel(’y=sin(x)’,’fontweight’,’bold’); >>title(’正弦函数’,’fontsize’,12,’fontweight’,’bold’,’fontname’,’隶书’)
>>text(3*pi/4,sin(3*pi/4),’\leftarrowsin(t) = .707’,’FontSize’,16)
>>text(pi,sin(pi),’\leftarrowsin(t) = 0’,’FontSize’,16)
>>text(5*pi/4,sin(5*pi/4),’sin(t) = -.707\rightarrow’,’HorizontalAlignment’,’right’,’FontSize’,16)
实例
>>X=1:0.1*pi:2*pi;
>>Y=sin(X);
>>plot(X,Y)
>>gtext(’y=sin(x) ’, ’fontsize’,12)
实例
>>Z = peaks;
>>h = plot(Z(:,33));
>>x = get(h,’XData’); % Get the plotted data
>>y = get(h,’YData’);
>>imin = find(min(y) == y);% Find the index of the min and max
>>imax = find(max(y) == y);
>>text(x(imin),y(imin),[’Minimum=’,num2str(y(imin))],’VerticalAlignment’,’middle’,’HorizontalAlignment’,’lef
t’,’FontSize’,14)
>>text(x(imax),y(imax),[’Maximum=’,num2str(y(imax))],’VerticalAlignment’,’bottom’,’HorizontalAlignment’,’r
ight’,’FontSize’,14)
>>str1(1) = {’Center each line in the Uicontrol’};
>>str1(2) = {’Also check out the textwrap function’};
>>str2(1) = {’Each cell is a quoted string’};
>>str2(2) = {’You can specify how the string is aligned’};
>>str2(3) = {’You can use LaTeX symbols like \pi \chi \Xi’};
>>str2(4) = {’\bfOr use bold \rm\itor italic font\rm’};
>>str2(5) = {’\fontname{courier}Or even change fonts’};
>>uicontrol(’Style’,’text’,’Position’,[80 80 200 30],’String’,str1);
>>text(45,0,str2,’HorizontalAlignment’,’right’)
实例
>>x=1:0.1*pi:2*pi;
>>y=sin(x);
>>plot(x,y)
>>xlabel(’x(0-2\pi)’,’fontweight’,’bold’);
>>ylabel(’y=sin(x)’,’fontweight’,’bold’); >>title(’正弦函数’,’fontsize’,12,’fontweight’,’bold’,’fontname’,’隶书’)
>>text(3*pi/4,sin(3*pi/4),’\leftarrowsin(t) = .707’,’FontSize’,16)
>>text(pi,sin(pi),’\leftarrowsin(t) = 0’,’FontSize’,16)
>>text(5*pi/4,sin(5*pi/4),’sin(t) = -.707\rightarrow’,’HorizontalAlignment’,’right’,’FontSize’,16)
实例
>>X=1:0.1*pi:2*pi;
>>Y=sin(X);
>>plot(X,Y)
>>gtext(’y=sin(x) ’, ’fontsize’,12)
实例
>>Z = peaks;
>>h = plot(Z(:,33));
>>x = get(h,’XData’); % Get the plotted data
>>y = get(h,’YData’);
>>imin = find(min(y) == y);% Find the index of the min and max
>>imax = find(max(y) == y);
>>text(x(imin),y(imin),[’Minimum=’,num2str(y(imin))],’VerticalAlignment’,’middle’,’HorizontalAlignment’,’lef
t’,’FontSize’,14)
>>text(x(imax),y(imax),[’Maximum=’,num2str(y(imax))],’VerticalAlignment’,’bottom’,’HorizontalAlignment’,’r
ight’,’FontSize’,14)
>>str1(1) = {’Center each line in the Uicontrol’};
>>str1(2) = {’Also check out the textwrap function’};
>>str2(1) = {’Each cell is a quoted string’};
>>str2(2) = {’You can specify how the string is aligned’};
>>str2(3) = {’You can use LaTeX symbols like \pi \chi \Xi’};
>>str2(4) = {’\bfOr use bold \rm\itor italic font\rm’};
>>str2(5) = {’\fontname{courier}Or even change fonts’};
>>uicontrol(’Style’,’text’,’Position’,[80 80 200 30],’String’,str1);
>>text(45,0,str2,’HorizontalAlignment’,’right’)
图例标注
在对数值结果进行绘图时,经常会出现在一张图中绘制多条曲线的情况,这时用户可以 使用 legend 命令为曲线填加图例以便区分它们。该函数能够为图形中所有的曲线进行自动标 注,并以输入变量作为标注文本
字符串 位置 字符串 位置 North 绘图区内的上中部 South 绘图区内的底部 East 绘图区内的右部 West 绘图区内的左中部 NorthEast 绘图区内的右上部 NorthWest 绘图区内的左上部 SouthEast 绘图区内的右下部 SouthWest 绘图区内的左下部 NorthOutside 绘图区外的上中部 SouthOutside 绘图区外的下部 EastOutside 绘图区外的右部 WestOutside 绘图区外的左部 NorthEastOutside 绘图区外的右上部 NorthWestOutside 绘图区外的左上部 SouthEastOutside 绘图区外的右下部 SouthWestOutside 绘图区外的左下部 Best 标注与图形的重叠最小处 BestOutside 绘图区外占用最小面积
• 0:自动定位,使得标注图标与图形重叠最少; • 1:默认值,置于图形的右上角; • 2:置于图形的左上角; • 3:置于图形的左下角; • 4:置于图形的右下角; • -1:置于图形的右外侧。 用户还可以通过鼠标来调整图例标注的位置
实例
>>x = -pi:pi/20:pi;
>>plot(x,cos(x),’-ro’,x,sin(x),’-.b’)
>>h = legend(’cos’,’sin’,2);
在对数值结果进行绘图时,经常会出现在一张图中绘制多条曲线的情况,这时用户可以 使用 legend 命令为曲线填加图例以便区分它们。该函数能够为图形中所有的曲线进行自动标 注,并以输入变量作为标注文本
字符串 位置 字符串 位置 North 绘图区内的上中部 South 绘图区内的底部 East 绘图区内的右部 West 绘图区内的左中部 NorthEast 绘图区内的右上部 NorthWest 绘图区内的左上部 SouthEast 绘图区内的右下部 SouthWest 绘图区内的左下部 NorthOutside 绘图区外的上中部 SouthOutside 绘图区外的下部 EastOutside 绘图区外的右部 WestOutside 绘图区外的左部 NorthEastOutside 绘图区外的右上部 NorthWestOutside 绘图区外的左上部 SouthEastOutside 绘图区外的右下部 SouthWestOutside 绘图区外的左下部 Best 标注与图形的重叠最小处 BestOutside 绘图区外占用最小面积
• 0:自动定位,使得标注图标与图形重叠最少; • 1:默认值,置于图形的右上角; • 2:置于图形的左上角; • 3:置于图形的左下角; • 4:置于图形的右下角; • -1:置于图形的右外侧。 用户还可以通过鼠标来调整图例标注的位置
实例
>>x = -pi:pi/20:pi;
>>plot(x,cos(x),’-ro’,x,sin(x),’-.b’)
>>h = legend(’cos’,’sin’,2);
坐标轴的控制
在 MATLAB 7.0 中可以通过设置各种参数来实现对坐标轴的控制,其中的高级控制涉及 到图形句柄,
在 MATLAB 7.0 中可以通过设置各种参数来实现对坐标轴的控制,其中的高级控制涉及 到图形句柄,
.axis 函数控制坐标轴特征
该命令用于控制坐标轴的刻度范围及显示形式
.axis 函数控制坐标轴特征
该命令用于控制坐标轴的刻度范围及显示形式
axis 命令的控制字符串 字符串 说明
auto 自动模式,使得坐标轴范围能容纳下所有的图形 manual 以当前的坐标范围限定图形的绘制,此后使用 hold on 命令再次绘图时保持坐标轴范围不变 tight 将坐标范围限制在指定的数据范围内
fill 设置坐标范围和 PlotBoxAspectRatio 属性以使坐标满足要求 ij 将坐标设置成矩阵形式,原点在左上角 xy 将坐标设置成直角坐标系 equal 将各坐标轴的刻度设置成相同 image 与 equal 类似 square 设置绘图区为正方形 vis3d 使图形在旋转或拉伸过程中保持坐标轴的比例不变 normal 解除对坐标轴的任何限制 off 取消对坐标轴的一切设置 on 恢复对坐标轴的一切设置
实例
x = 0:.025:pi/2;
plot(x,tan(x),’-ro’)
该命令用于控制坐标轴的刻度范围及显示形式
.axis 函数控制坐标轴特征
该命令用于控制坐标轴的刻度范围及显示形式
axis 命令的控制字符串 字符串 说明
auto 自动模式,使得坐标轴范围能容纳下所有的图形 manual 以当前的坐标范围限定图形的绘制,此后使用 hold on 命令再次绘图时保持坐标轴范围不变 tight 将坐标范围限制在指定的数据范围内
fill 设置坐标范围和 PlotBoxAspectRatio 属性以使坐标满足要求 ij 将坐标设置成矩阵形式,原点在左上角 xy 将坐标设置成直角坐标系 equal 将各坐标轴的刻度设置成相同 image 与 equal 类似 square 设置绘图区为正方形 vis3d 使图形在旋转或拉伸过程中保持坐标轴的比例不变 normal 解除对坐标轴的任何限制 off 取消对坐标轴的一切设置 on 恢复对坐标轴的一切设置
实例
x = 0:.025:pi/2;
plot(x,tan(x),’-ro’)
zoom 函数控制坐标轴缩放
该命令用于实现对二维图形的缩放 zoom ’控制字符串’
字符串 说明 空 在 zoom on 和 zoom off 之间切换 (factor) 以 factor 作为缩放因子进行坐标轴的缩放 on 允许对坐标轴进行缩放 off 禁止对坐标轴进行缩放 out 恢复到最初的坐标轴设置 reset 设置当前的坐标轴为最初值 xon 允许对 x 轴进行缩放 yon 允许对 y 轴进行缩放
该命令用于实现对二维图形的缩放 zoom ’控制字符串’
字符串 说明 空 在 zoom on 和 zoom off 之间切换 (factor) 以 factor 作为缩放因子进行坐标轴的缩放 on 允许对坐标轴进行缩放 off 禁止对坐标轴进行缩放 out 恢复到最初的坐标轴设置 reset 设置当前的坐标轴为最初值 xon 允许对 x 轴进行缩放 yon 允许对 y 轴进行缩放
grid 函数控制坐标轴网格
该命令用于绘制坐标网格,其调用格式如下: grid on //给当前坐标轴填加网格线 grid off //取消当前坐标轴的网格线 grid minor //设置网格绘制的密度,即网格线间的间距 grid //在 grid on 和 grid off 之间切换
实例
>>X=0:0.1*pi:2*pi;
>>Y=sin(X);
>>plot(X,Y);
>>grid on
该命令用于绘制坐标网格,其调用格式如下: grid on //给当前坐标轴填加网格线 grid off //取消当前坐标轴的网格线 grid minor //设置网格绘制的密度,即网格线间的间距 grid //在 grid on 和 grid off 之间切换
实例
>>X=0:0.1*pi:2*pi;
>>Y=sin(X);
>>plot(X,Y);
>>grid on
box 函数控制坐标轴封闭
该命令用于在图形四周都能显示坐标,其调用格式如下:
box on
box off
box
该命令用于在图形四周都能显示坐标,其调用格式如下:
box on
box off
box
图形数据取点
当用户为某一函数作好图形后,有时候会希望知道在某一自变量值下的函数值,这时使 用取点命令 ginput 可方便地通过鼠标来读取二维平面图中任一点的坐标值
实例
>>x=0:0.1*pi:2*pi;
>>y=sin(x);
>>plot(x,y)
>>[m n]=ginput(1)
>>hold on
>>plot(m,n,’or’)
>>text(m(1),n(1),[’m(1)=’,num2str(m(1)),’n(1)=’,num2str(n(1))])
当用户为某一函数作好图形后,有时候会希望知道在某一自变量值下的函数值,这时使 用取点命令 ginput 可方便地通过鼠标来读取二维平面图中任一点的坐标值
实例
>>x=0:0.1*pi:2*pi;
>>y=sin(x);
>>plot(x,y)
>>[m n]=ginput(1)
>>hold on
>>plot(m,n,’or’)
>>text(m(1),n(1),[’m(1)=’,num2str(m(1)),’n(1)=’,num2str(n(1))])
子图和图形保持
在绘图过程中,用户会经常碰到下面两种情况。在已存的一张图中填加新的曲线;将几 个图形在同一个图形窗口中表现出来,但又不在同一个坐标系中绘制。MATLAB 7.0 为这两 种需要分别提供 hold 函数和 subplot 函数,前面的示例已用到 hold 函数
在绘图过程中,用户会经常碰到下面两种情况。在已存的一张图中填加新的曲线;将几 个图形在同一个图形窗口中表现出来,但又不在同一个坐标系中绘制。MATLAB 7.0 为这两 种需要分别提供 hold 函数和 subplot 函数,前面的示例已用到 hold 函数
【subplot 命令】 该命令用于生成并控制多个坐标轴
实例
>>income = [3.2 4.1 5.0 5.6];
>>outgo = [2.5 4.0 3.35 4.9];
>>subplot(2,1,1); plot(income)
>>subplot(2,1,2); plot(outgo)
实例
>>income = [3.2 4.1 5.0 5.6];
>>outgo = [2.5 4.0 3.35 4.9];
>>subplot(2,1,1); plot(income)
>>subplot(2,1,2); plot(outgo)
光照控制命令
函数名 说明 函数名 说明 light 设置曲面光源 specular 镜面反射模式 surfl 绘制存在光源的三维曲面图 diffuse 漫反射模式 lighting 设置曲面光源模式 lightangle 球坐标系中的光源 material 设置图形表面对光照反映模式
【light 函数命令】 该命令为当前图形建立光源
实例
>>h = surf(peaks);
>>light(’Position’,[1 0 0],’Style’,’infinite’);
【lighting 函数命令】 该命令用于设置曲面光源模式,其调用格式如下: lighting flat //平面模式,以网格为光照的基本单元。这是系统默认的模式 lighting gouraud //点模式,以像素为光照的基本单元 lighting phong //以像素为光照的基本单元,并计算考虑了各点的反射 lighting none //关闭光源
实例
>>subplot(2,2,1)
>>mesh(peaks);light(’Position’,[1 0 0],’Style’,’infinite’);
>>lighting phong
>>subplot(2,2,2)
>>mesh(peaks);light(’Position’,[1 0 0],’Style’,’infinite’);
>>lighting flat
>>subplot(2,2,3)
>>mesh(peaks);light(’Position’,[1 0 0],’Style’,’infinite’);
>>lighting none
>>subplot(2,2,4)
>>mesh(peaks);light(’Position’,[1 0 0],’Style’,’infinite’);
>>lighting gouraud
【material 函数命令】 该命令用于设置图形表面对光照反映模式,
material shiny //图形表面显示较为光亮的色彩模式 material dull //表面显示较为阴暗的色彩模式 material metal //表面呈现金属光泽的模式 material([ka kd ks]) //[ka kd ks]用于定义图形的 ambient/diffuse/specular 三种反射模式的强度 material([ka kd ks n]) // n 用于定义镜面反射的指数 material([ka kd ks n sc]) // sc 用于定义镜面反射的颜色
material default
【surfl 函数命令】 该命令用于绘制三维带光照模式的阴影图。surfl(⋯)效果与命令 surf(⋯)基本上一样,但 是它会受光源的影响。图形的色泽取决于曲面的漫反射、镜面反射与环境光照模式。其主要 调用格式如下: surfl(Z)、surfl(X,Y,Z)、surfl(Z,S)、surfl(X,Y,Z,S)、surfl(X,Y,Z,S,K) //这些都是有效的使用形式。参数 S 为一个三维向量[Sx,Sy,Sz],用于指定光源的方向。S 也可视为点坐标系下的二维向量[AZ,EL]。S 的默认值 为从当前观察方向逆时针旋转 45°。使用命令组 cla;hold on;view(AZ,EL);surfl(⋯);hold off 等可画出视 角方向为(AZ,EL)的带光照模式的曲面图形。第 5 个参数 K=[ka,kd,ks,spread]用于指定环境光、漫反射光、镜 面反射光、扩散系数等的强弱 surfl(⋯,’light’) //用 LIGHT 对象生成一带颜色和光照模式的曲面。该命令可以生成与用默认光照模式 效果不同的曲面 surfl(⋯,’cdata’) //指定的曲面的反射光的颜色为 cdata H = surfl(⋯) //返回曲面与光源的句柄
实例
>>[X,Y] = meshgrid(-3:1/8:3);
>>Z = peaks(X,Y);
>>surfl(X,Y,Z);
>>shading interp;
>>colormap(gray);
。MATLAB 为用户提供了 3 种不 同的方式输出当前的图形。首先是通过图形窗口的命令菜单或是工具栏中的打印选项来输出; 其次,使用 MATLAB 语言提供的内置打印引擎或系统的打印服务来实现;最后可以以其他 的图形格式存储图形,然后通过其他的图形处理软件对其进行处理和打印。
创建图形窗口的命令是 figure
实现打印的函数 print
图形窗口的属性
get(n) //返回句柄值为 h 的图形窗口的参数名称及其当前值 set(n) //返回可为句柄值为 h 的图形窗口的参数名称及其用户可为这些参数设置的值
创建图形窗口的命令是 figure
实现打印的函数 print
图形窗口的属性
get(n) //返回句柄值为 h 的图形窗口的参数名称及其当前值 set(n) //返回可为句柄值为 h 的图形窗口的参数名称及其用户可为这些参数设置的值
【New】选项用于新建一个 M-文件(M-File)、图形窗口(Figure)、Simulink 模型(Model)、
【Import Data】选项用于导入数据。 【Save Workspace As】选项用于将图形窗口中的图形数据存储在二进制 mat 文件中,它们 可以供其他的编程语言(如 C 语言等)调用。 【Preferences】选项用于定义图形窗口的各种设置,包括字体、颜色等,如图 5-78 所示。 【Export Setup】选项用于打开“图形输出”对话框,可以把图形以 emf、ai、bmp、eps、 jpg、pdf 等格式保存,并设置有关图形窗口的显示等方面的参数,如图 5-79 所示。读者可以 选择不同的设置以观察图形窗口有什么变化。 【Print Setup】选项用于打开“打印设置”对话框。在这里可以设置图片的题图等。 【Print Preview】选项用于打开打印预览对话框,如图 5-81 所示。 【Print】选项用于打开打印对话框。
读者只要对其中各种工具栏的各个工具图标加以试验,就不难发现前面介绍的许多处理
图形的命令其实可以直接通过这些直观的图标工具来实现,读者只要熟练掌握这些工具条的 应用,就可以完成大部分图形处理工作,而不需要去记忆大量的命令函数。
图形的命令其实可以直接通过这些直观的图标工具来实现,读者只要熟练掌握这些工具条的 应用,就可以完成大部分图形处理工作,而不需要去记忆大量的命令函数。