Matlab在三维建模计算的应用

上传人:M****1 文档编号:1120426 上传时间:2017-05-28 格式:DOC 页数:38 大小:3.35MB
返回 下载 相关 举报
Matlab在三维建模计算的应用_第1页
第1页 / 共38页
Matlab在三维建模计算的应用_第2页
第2页 / 共38页
Matlab在三维建模计算的应用_第3页
第3页 / 共38页
Matlab在三维建模计算的应用_第4页
第4页 / 共38页
Matlab在三维建模计算的应用_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《Matlab在三维建模计算的应用》由会员分享,可在线阅读,更多相关《Matlab在三维建模计算的应用(38页珍藏版)》请在金锄头文库上搜索。

1、Matlab在三维建模计算的应用为了显示三维图形,MATLAB 提供了各种各样的函数。有一些函数可在三维空间中画线,而另一些可以画曲面与线格框架。另外,颜色可以用来代表第四维。当颜色以这种方式使用时,由于它不再象照片中那样显示信息的自然属性-色彩,而且也不是基本数据的内在属性,所以它称作伪彩色。为了简化对三维图形的讨论,对颜色的介绍推迟到下一章。在这一章,主要讨论绘制三维图形的基本概念。18.1 函数 plot3plot3 命令将绘制二维图形的函数 plot 的特性扩展到三维空间。函数格式除了包括第三维的信息(比如 Z 方向)之外,与二维函数 plot 相同。plot3 一般语法调用格式是 p

2、lot3(x1,y1,z1,S1,x2,y2,z2,S2,),这里 xn,yn 和 zn 是向量或矩阵,S n 是可选的字符串,用来指定颜色、标记符号和/或线形。总的来说,plot3 可用来画一个单变量的三维函数。如下为一个三维螺旋线例子: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) title( Helix ),xlabel( sint(t) ),ylabel( cos(t) ),zlabel( t ) text(0,0,0, Origin ) grid v = axisv =-1 1 -1 1 0 40输出见图 18.1.图 18.1 螺旋线图从上例可明

3、显看出,二维图形的所有基本特性在三维中仍都存在。axis 命令扩展到三维只是返回 Z 轴界限(0 和 40),在数轴向量中增加两个元素。函数 zlabel 用来指定 z 轴的数据名称,函数 grid 在图底绘制三维网格。函数 test(x,y,z, string )在由三维坐标 x,y,z 所指定的位置放一个字符串。另外,子图和多图形窗口可以直接应用到三维图形中。在最后一章可以看到,通过指定 plot 命令的多个参量或使用 hold 命令,可以把多条直线或曲线重叠画出。plot3 以及其它的三维图形函数都可以提供相同的能力。例如,增加维数的 plot3 命令可以使多个二维图形沿一个轴排列起来,

4、而不是直接将二维图形叠到另一个的上面。 x=linspace(0,3*pi); % x-axis data z1=sin(x); % plot in x-z plane z2=sin(2*x); z3=sin(3*x); y1=zeros(size(x); % spread out along y-axis y3=zeros(size(x); % by giving each diffent y-axis values y2=y3/2; plot3(x,y1,z1,x,y2,z2,x,y3,z3); grid,xlabel( x-axis ),ylabel( y-axis ,abel( z-a

5、xis ) title( sin(x),sin(2x),sin(3x) )输出见图 18.2.图 18.2 正弦曲线图上述图形也可以沿另外方向堆列。 plot3(x,z1,y1,x,z2,y2,x,z3,y3) grid,xlabel( x-axis ,ylabel( y-axis ),zlabel( z-axis ) title( sin(x),sin(2x),sin(3x) )输出见图 18.3.图 18.3 正弦曲线图18.2 改变视角注意两个图形,一个是以 30 度视角向下看 z=0 平面,一个是以 37.5 度视角向上看 x=0 平面。这是对所有三维图形的缺省视角。与 z=0 平面所

6、成的方向角叫仰角,与 x=0 平面的夹角叫做方位角。这样,缺省的三维视角方向仰角为 30 度,方位角为-37.5 度。而缺省的二维视角仰角为 90 度,方位角为 0 度。仰角和方位角的概念在图 18.4 中形象地画出。图 18.4 仰角和方位角示意图图 18.5 视角举例图在 MATLAB 中,函数 view 改变所有类型的二维和三维图形的图形视角。view(az,el)和 view(az,el)将视角改变到所指定的方位角 az 和仰角 el。考虑下面脚本 M 文件形式的例子。% viewpoint example using subplotsx=linspace(0,3*pi).;Z=sin

7、(x) sin(2*x) sin(2*x); % create Y and Z axes as matricesY=zeros(size(x) ones(size(x)/2 ones(size(x);subplot(2,2,1)plot3(x,Y,Z) % plot3 works with column-oriented matrices toogrid,xlabel( X-axis ),ylabel( Y-axis ),zlabel( Z-axis )title( Default Az = -37.5,E1 = 30 )view(-37.5,30)subplot(2,2,2) plot3(x

8、,Y,Z) grid,xlabel( X-axis ),ylabel( Y-axis ),zlabel( Z-axis )title( Az Rotated to 52.5 )view(-37.5+90,30)subplot(2,2,3)plot3(x,Y,Z) grid,xlabel( X-axis ),ylabel( Y-axis ),zlabel( Z-axis )title( E1 Increased to 60 )view(-37.5,60)subplot(2,2,4)plot3(x,Y,Z) grid,xlabel( X-axis ),ylabel( Y-axis )title(

9、Az = 0,E1 = 90 )view(0,90)输出见图 18.5。除了上面的形式,view 还提供了综合在表 18.1 的其它特性:表 18.1函数 viewview(az,el) 将视图设定为方位角 az 和仰角 elview(az,el)view(x,y,z) 在笛卡儿坐标系中将视图设为沿向量x,y,z指向原点,例如 view(0 0 1)=view(0,90)view(2) 设置缺省的二维视角,az=0,el=90view(3) 设置缺省的三维视角,az=-37.5,el=30az,el=view 返回当前的方位角 az 和仰角 elview(T) 用一个 44 的转矩阵 T 来设

10、置视图角T=view 返回当前的 44 转矩阵最后,为了演示 MATLAB 句柄图形能力,精通 MATLAB 工具箱包含了函数mmview3d。在产生二维或三维图形后调用此函数, mmview3d ,在当前图形中放置水平角和方位角滑标(滚动条)以设置视角。使用函数 mmview3d 的更详细的信息见在线帮助。18.3 两个变量的标量函数相对于 plot3 产生的线条图形,经常希望画出两个变量的标量函数,比如:z=f(x,y)这里每一对 x 与 y 的值产生一个 z 的值。它作为 x 与 y 的函数,是三维空间中的一个曲面。为了在 MATLAB 里画出这个曲面,z 的值存放在一个矩阵中。象在*二

11、维插值这一节所描述的那样,给出 x 与 y 的值作为独立的变量,z 是因变量矩阵,x、y 与 z 的联系就是:z(i,:)=f(x,y(i) and z(:,j)=f(x(j),y)即 z 的第 i 行与的 y 第 i 个元素相关,而 z 的第 j 列与 x 的第个 j 元素相关。或者说,y 沿着 z 的列变化,而 x 沿着 z 的行变化。当 z=f(x,y)能简化表示时,可以方便地用数组运算在单个语句中算出 z 的所有的值。这样做,要求我们以合适的方向创建所有 x 与 y 值的矩阵。(这种方向有时被 Mathwork 公司称作为方格) 。MATLAB 提供了函数 meshgrid 来执行这个

12、步骤。 x=-3:3; % choose x-axisd values y=1:5; % y-axis values X,Y=meshgrid(x,y)X =-3 -2 -1 0 1 2 3-3 -2 -1 0 1 2 3-3 -2 -1 0 1 2 3-3 -2 -1 0 1 2 3-3 -2 -1 0 1 2 3Y =1 1 1 1 1 1 12 2 2 2 2 2 23 3 3 3 3 3 34 4 4 4 4 4 45 5 5 5 5 5 5如上所见,函数 meshgrid 对 y 中行的每一行复制 x,同样也对 x 中列的每一列复制 y。这种方向与前面语句相一致,即 y 向下改变其列

13、,而 x 横跨改变其行。给定 X 和 Y,如果 z=f(x,y)=(x+y)2,那么 z 便定义一个三维曲面的数据矩阵: Z=(X+Y).2Z =4 1 0 1 4 9 161 0 1 4 9 16 250 1 4 9 16 25 361 4 9 16 25 36 494 9 16 25 36 49 64当函数不能象上面那样简单表示出来时,便只能用 For 循环或 While 循环来计算 Z 的元素。在很多情况下,有可能按行或按列计算 Z。例如,如果能按行计算 Z,下面的脚本文件段会很有帮助:x=? % statement defining vector of x-axis valuesy=?

14、 % statement defining vector of y-axis valuesnx=length(x); % length of x is no. of rows in Zny=length(y); % length of y is no. of columns in ZZ=zeros(nx,ny); % initialize Z matrix for speedfor r=1:nxpreliminary commandsZ(r,:)=a function of y and x(r) defining r-th row of Zend相反,如果能按列计算 Z,下面的脚本文件段会很有帮助:x=? % statement defining vector of x-axis valuesy=? % statement defining vector of y-axis valuesnx=length(x); % length of x is no. of rows in Zny=length(y); % length

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号