matlab中patch函数详解
2012-03-15 22:18阅读:
patch函数是matlab中用来给某个区域填充颜色的函数,直接翻译patch就是补丁的意思,看来还真是名副其实啊,下面详细解答一下它的用法吧。
说的也不是很详细,具体可看
matlab中的
help信息,进行详解。
在学习MATLAB时,多看例子有不懂的语句可以按住ctrl+R进行隐藏注视后,查看与原程序有何不同,再安ctrl+T进行取消注释行即可。
1、 2维情况如下:x、y代表点区域坐标,patch(
x,
y, [
r g
b]);
》 patch([0 .5 1], [0 1 0], [1 0 0])
显示如下图:

2、下面是利用patch绘制3维图像,主要有两种格式:一种先给出所有点的x y z坐标,再填充色彩,如下例:
clear
x=[ 0 1 1 0 0 0;
1 1 0 0 1 1;
1 1 0 0 1 1;
0 1 1 0 0 0];
y=[ 0 0 1 1 0 0;
0 1 1 0 0 0;
0 1 1 0 1 1;
0 0 1 1 1 1];
z=[ 0 0 0 0 0 1;
0 0 0 0 0 1;
1 1 1 1 0 1;
1 1 1 1 0 1];
figure(1);
patch(x,y,z,'r');
% 此种patch函数格式,按照面来填充。每个面按点来叙述的. X坐标面是按照列实现,
% 每个面按照逆时针旋转记录,最后一个面要格外注意记录方式。
view(3)
axis([-3 3 -3 3 -3 3]);
xlabel('x /km');
ylabel('y /km');
zlabel('z /km');
grid on;
box on;
%显示如下图

3、另一种是,给出每个点的x y z坐标后,在把每个面用点号表示后,在绘制填充颜色。如下例子:
%
% Learning how to use patch
%
clear
v1=[ 0 0 0;
1 0 0;
1 1 0;
0 1 0;
0 0 1;
1 0 1;
1 1 1;
0 1 1];
f1=[1 2 6 5;
2 3 7 6;
3 4 8 7;
4 1 5 8;
1 2 3 4;
5 6 7 8];
%
每行是表示一个面的四个点号,一个6个面
figure(2);
c=hsv(1);
c1(1,:)=[1 0 0]; %第一个红色
c1(2,:)=[0 1 0]; %2绿色
c1(3,:)=[1 1 0]; %3
c1(4,:)=[1 0 1]; %
c1(5,:)=[1 1 1]; %
c1(6,:)=[0 0 1]; %蓝色
%
按照点和面单独的来陈述,v1是一个点数据按照逆时针方向进行,填充按照面的顺序来填充
%
you can check this:Multifaceted Patches::Creating 3-D
Moedls with Patches
patch('Vertices',v1,'Faces',f1,...
'FaceVertexCData',c1,...
'FaceColor','flat');
axis([-3 3 -3 3 -3 3]);
title('patch function show');
xlabel('x /km');
ylabel('y /km');
zlabel('z /km');
grid on;
box on;
%显示如下图
