http://blog.sina.com.cn/s/blog_707b64550100z1nz.html

matlab中patch函数的用法——emily

(2011-11-18 17:20:33)

 

patch

创建补片图形对象

句法:

patch(X,Y,C)

patch(X,Y,Z,C)

patch(FV)

patch(...'PropertyName',propertyvalue...)

patch('PropertyName',propertyvalue,...)

handle = patch(...)

描述:

patch是个底层的图形函数,用来创建补片图形对象。一个补片对象是由其顶点坐标确定的一个或多个多边形。用户可以指定补片对象的颜色和灯光。

patch(X,Y,C)

添加已填充的二维补片到当前坐标轴。X和Y中的元素指定了多边形的定点。如果X和Y是矩阵,MATLAB将每一列生成一个多边形。C决定了补片的颜色,它可以是单个的ColorSpec,每个表面一个颜色,或每个定点一个颜色。如果C是1*3的向量,它将被看成是RGB三元组,直接指定颜色。

patch(X,Y,Z,C)

创建三维坐标下的补片。

patch(FV)

使用结构体FV来创建补片。FV包含如下的结构域:vertices、faces以及facevertexdata(可选)。这些结构域对应补片对象的Vertices、Faces和FaceVerticxCData属性。

patch(‘PropertyName’,propertyvalue,...)

利用指定的属性/值参数对来指定补片对象的所有属性。除非用户显式的指定FaceColor和EdgeColor的值,否则,MATLAB会使用缺省的属性值。该调用格式允许用户使用Faces和Vertices属性值来定义补片。

handle=patch(...)

返回创建的补片对象的句柄。

注意:

不像fill或area这样的高层创建函数,patch并不检查图形窗口的设置以及坐标轴的NextPlot属性,它仅仅将补片对象添加到当前坐标轴。

如果坐标数据不能定义封闭的多边形,patch函数自动使多边形封闭。数据能定理凹面或交叉的多边形。然而,如果单个补片面的边缘相互交叉,得到的面可能不会完全填充。在这种情况下,最好将面分解为更小的多边形。

详细说明patch的属性:

你可以注明这些属性为:属性名字和属性值成对形式、结构矩阵和细胞矩阵。

其中有两个属性是用来说明颜色的:

CData:用在说明X、Y、Z坐标时(XData、YData、ZData)

FaceVertexCData:用在说明顶点或联接矩阵(Vertices和Faces)

CData和FaceVertexCData属性接受这样的颜色数据:索引值、真彩色(RGB)值。(CData、FaceVertexCData)

索引颜色数据可以表示整个色图的直接索引值或线性映射到整个色图的刻度值(caxis)。CDataMapping 决定了matlab如何翻译索引颜色数据。

颜色数据说明:

patch的颜色说明如下:

所有面用同一个颜色;

一个面一个颜色,即平面着色;

一个顶点一个颜色,即插值着色;

下面的表格说明了matlab如何解释由CData、FaceVertexCData定义的颜色数据。

[X,Y,Z]                    CData

索引值            真彩色

m*n             标量              1*1*3        所有面用同一个颜色,边缘用同一个颜色

m*n            1*n(n>=4)        1*n*3        一个面一个颜色,边缘用一个颜色
      m*n              m*n             m*(n-3)     一个顶点一个颜色,面可以是平滑的一个颜色的或插值的,边缘也可以是平滑的或插值的。

顶点         面             FaceVertexCData

索引值          真彩色

m*n          k*3         标量            1*3

m*n          k*3          k*1            k*3               同上

m*n          k*3          m*1            m*3

举例:

该例中使用两种不同的方法来创建一个补片对象:

指定x、y和z坐标以及颜色数据(XData、YData和ZData以及CData属性)

指定顶点,连接矩阵以及颜色矩阵(Vertices、Faces、FaceVertexCData以及FaceColor属性)

1、指定x、y和z坐标

x=[0 0;0 1;1 1];

y=[1 1;2 2;2 1];

z=[1 1;1 1;1 1];

tcolor(1,1,1:3)=[1 1 1];

tcolor(1,2,1:3)=[.7 .7 .7];

patch(x,y,z,tcolor)

注意每个面和其他面之间共用两个顶点。

2、指定定点和表面

Vertices属性包含定义补片的每一个定点的坐标,Faces属性确定如何连接这些顶点来组成不判的每一个表面。在本例中,两个顶点位于同一个位置,因此需要指定六个顶点。每一样包含定点的x、y和z坐标。
    vert=[0 1 1;0 2 1;1 2 1;1 1 1];

有两个表面,按照指定的顺序连接定点而成:

fac=[1 2 3;1 3 4];

指定表面的颜色,指定包含两个RGB颜色的2*3的矩阵;

tcolor=[1 1 1;.7 .7 .7];

用户必须设置FaceColor属性为flat,通过指定Faces、Vertices、FaceVertexCData以及FaceColor属性来创建

补片对象:

patch('Faces',fac,'Vertices',vert,'FaceVertexCData',tcolor,'FaceColor','flat')

结果如上图所示。

。。。。。。

matlab中patch函数的用法的更多相关文章

  1. matlab中repmat函数的用法(堆叠矩阵)

    matlab中repmat函数的用法 B = repmat(A,m,n) B = repmat(A,[m n]) B = repmat(A,[m n p...]) 这是一个处理大矩阵且内容有重复时使用 ...

  2. Matlab中imfilter()函数的用法

    Matlab中imfilter()函数的用法 功能:对任意类型数组或多维图像进行滤波.用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,... ...

  3. matlab中norm函数的用法

    格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM   Matrix or vecto ...

  4. MATLAB中exist函数的用法

    exist:exist主要有两种形式,一个参数和两个参数的,作用都是用于确定某值是否存在:1. b = exist( a)      若 a 存在,则 b = 1: 否则 b = 0:2. b = e ...

  5. [转]matlab中squeeze函数的用法,numel的用法

    squeeze的作用是移除单一维. 如果矩阵哪一个维数是1,B=squeeze(A)就将这个维数移除. 考虑2-by-1-by-3 数组Y = rand(2,1,3). 这个数组有单一维 —就是每页仅 ...

  6. Matlab中num2str函数的用法

    转载:https://blog.csdn.net/SMF0504/article/details/51836062 函数功能: 把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出 ...

  7. MATLAB中 feval 函数的用法

    feval就是把已知的数据或符号带入到一个定义好的函数句柄中,你看看下面的例子 syms tf=@(x,y) x^2+y^2k1=feval(f,1,t)k2=f(1,t)k3=feval(f,1,1 ...

  8. matlab中meshgrid函数的用法

    meshgrid用于从数组a和b产生网格.生成的网格矩阵A和B大小是相同的.它也可以是更高维的.这里的大小指的是,size()函数的大小,size()函数返回的是一个向量, 那么size(A) = s ...

  9. matlab中nargin函数的用法

    nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能. 通常可以用他来设定一些默认值,如下面的函数. 例子,函数test1的功能是输出a和b的和.如果只输入一个变量,则认为 ...

随机推荐

  1. python 函数的参数定义及调用

    参数定义:1. 位置参数:    这是熟悉的标准化参数,位置参数必须在调用函数中定义的准确顺序来传递,在没有默认参数的情况下,传入参数    的精确数目必须和声明的数目一致. def foo(who, ...

  2. 浏览器User-agent简史(user-agent)

    In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and ...

  3. Windows中使用OpenBLAS加速R语言计算速度

    在使用R的时候会发现R对CPU的利用率并不是很高,反正当我在使用R的时候,无论R做何种运算R的CPU利用率都只有百分子几,这就导致一旦计算量大的时候计算时间非常长,会给人一种错觉(R真的在计算吗?会不 ...

  4. EntityFrame CodeFirst 自动生成表

    来源:http://msdn.microsoft.com/zh-cn/data/jj193542 本视频和分步演练介绍通过 Code First 开发建立新数据库.这个方案包括建立不存在的数据库(Co ...

  5. 删除 TOMCAT 上次关闭遗留下来的 SESSION 缓存

    参考:删除缓存SESSION 找到tomcat目录下文件:%tomcat home%/conf/context.xml,在标签<Resource>前添加 <Manager pathn ...

  6. Siteserver-stl:searchOutput(搜索结果)自定义显示样式

    stl:searchOutput 自定义显示样式 自定义搜索提交表单需要在<stl:searchOutput>中嵌入显示搜索结果的标签,必须包含的标签 有<stl:pageConte ...

  7. sublime3+quick3.5 完整使用教程

    sublime3+quick3.5 完整使用教程 Administrator   2015-07-15 14:43:08 1. 安装Sublime3   2. 注册Sublime3     Help- ...

  8. 如何获取google地图、baidu百度地图的坐标

    google:打开google地图-->查找目的地-->右键:此位置居中-->地址栏键入javascript:void(prompt('',gApplication.getMap() ...

  9. IOS网络第二天 - 09-多值参数

    *********** #import "HMViewController.h" #import "MBProgressHUD+MJ.h" @interface ...

  10. Random随机类(11选5彩票)BigInteger大数据类(华为面试题1000的阶乘)

    先上Java Web图 为了简化叙述,只写Java代码,然后控制台输出 使用[Random类]取得随机数 import java.util.Random; public class Fir { pub ...