学习matlab(Matlab基础知识).doc_第1页
学习matlab(Matlab基础知识).doc_第2页
学习matlab(Matlab基础知识).doc_第3页
学习matlab(Matlab基础知识).doc_第4页
学习matlab(Matlab基础知识).doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二讲 Matlab基础知识1. 标识符把标志变量、常量或文件名的特定字符称为标识符,Matlab规定必须是英文字母、阿拉伯数字和下划线等符号组成的字符串,第一个符号必须是英文字母。2. Matlab中的数据及变量类型有三种类型的基本数据:(1)数值型数据,简称数值(Double Array):一般输入的数字均为数值数据,包含实数、复数。(2)字符串型数据,简称字符量(Char Array):用英文格式单引号加以界定的数字、字符、各种符号、表达式、方程式和汉字等。(3)符号型数据,简称符号量(Sym Object):用sym和syms可以把字符、表达式、方程、矩阵等定义成数学符号,称为符号型数据,运算结果为数学表达式。在命令窗口中键入class(a),回车可知已有变量a是哪一种类型的数据。3. 变量名及赋值(略)2.1 数值矩阵2.1.1 永久性数值变量名除了i、j、pi、eps(浮点运算相对精度10-52)、Inf、NaN外还有,realmin(最小正浮点数2-1022)、realmax(最大正浮点数21023)。2.1.2 数值矩阵的创建1.直接输入法a=1 6 1;4 6 2;9 3 8; b=2-3i,3+5i,2i;3,9i,6;5-i,7i,4;2.创建特殊数值矩阵的命令输入法命令格式功能命令格式功能zeros(n)输出n阶全零方阵rand(n)输出n阶均匀分布的随机方阵zeros(m,n)输出mn全零矩阵rand(m,n)输出mn阶均匀分布的随机矩阵ones(n)输出n阶全1方阵randn(n)输出n阶正态分布的随机方阵ones(m,n)输出mn全1矩阵randn(m,n)输出mn阶正态分布的随机矩阵eye(n)输出n阶单位方阵,n=1时可省略magic(n)输出n阶魔方阵(各行各列及主对角线元素和均为diag(a,k)输出矩阵a主对角线右移k列时其元素构成的列向量。k=0时可省略tril(a)truilu(a)输出矩阵a的主对角线下(上)方元素构成的下(上)三角矩阵。3变换矩阵结构的命令flipud(a)输出矩阵a上下翻转后的矩阵;fliplr(a)输出矩阵a左右翻转后的矩阵;rot90(a,k)输出矩阵a沿逆时针旋转k个90度后的矩阵,k为正负整数;rot90(a)输出矩阵a逆时针旋转90度后的矩阵;reshape(A,m,n)输出一个mn=k阶矩阵,它是由矩阵a的k个元素重新排列构成的矩阵,重排前后元素在矩阵中的符号不变。4. 一批特殊向量(行矩阵)的创建(1) 等差数列型向量的创建增量输入法:t=a:h:b或t=a:h:b, t=(a:h:b),a、b为起始值,h为公差,可正,可负,省略时为1.例如 t=0:0.1:2*pi线性等分命令 t=linspace(a,b,n),a、b为起始值,n为(b-a)的等分点个数。例x=linspace(2,2*pi,6)(2) 等比数列型向量的创建调用格式为:q=logspace(log10(a),log10(b),n)或q=logspace(as,bf,n),a、b分别为等比数列的初值和终值,n为等比数列划分时的节点数。例 q=logspace(0,1,6)2.1.3 数值矩阵的矩阵算法矩阵算法按照(线性代数)矩阵理论来运算。数组算法把矩阵视为由其元素构成的数据(数组),运算时在参与运算的矩阵的元素之间进行的数与数的运算,如通常的“.*”运算。便于对大批数据的处理。1. 数值矩阵维数的查验和矩阵的转置查验矩阵维数命令:size(a)或 size(a,r), r取1输出矩阵的行数;取2输出矩阵的列数。例 b=3 7 0 1;7 9 1 5; size(b)转置为: c=b2. 矩阵算法中的矩阵加、减和乘法运算普通的矩阵算法。注意:,a为矩阵,n为整数。当n0时,表示n个a相乘;当n0时,表示n个a相乘的逆。矩阵a与常数d的和定义为a+d=a+d*ones(size(a)。3. 数值矩阵的求逆及矩阵算法中的除法(1) 求逆命令矩阵a、b满足ab=ba=e(单位矩阵),格式b=inv(a)(2) 求矩阵的伪逆矩阵对矩阵b(可以是奇异或长方),同时满足xbx=b和bxb=x的矩阵x称为b的伪逆矩阵,格式x=pinv(b)(3) 左除解矩阵方程ax=b可得x=a-1b,格式x=inv(a)*b或x=ab或mldivide(a,b)(4) 右除解矩阵方程xa=b可得x=ba-1,格式x=b*inv(a)或x=b/a或mrdivide(b,a)4. 矩阵函数设a为方阵。expm(z)logma(a)sqrtm(a)矩阵a的平方根funm(a,f)矩阵a的任意函数f(a)2.1.4 数值矩阵的数组算法1.查验向量维数命令length(a),a为向量输出维数;a为列阵(行阵)时,输出列(行)数;a为长方形矩阵时,输出行和列数。2.数值矩阵间数组算法的四则运算a.*ba与b的对应元素相乘a.na中每个元素的n次方a./s,s.aa中各元素被s除a./b,b.aa中各元素除以b中对应元素s./a,a.ss被a中各元素除。3.数组算法中的基本初等函数运算函数命令数学意义函数命令数学意义函数命令数学意义sin(x)sin xround四舍五入angle(x)x的幅角asin(x)arcsinxfix输出靠零的整数pow2(x)2xcos(x)cos xfloor输出靠向的整数max(x)各列元素中最大值sec(x)sec xceil输出靠向的整数mean(x)各列元素之平均值tan(x)tan xatan(x)arctan xsum(x)各列元素之和cot(x)cot xexp(x)exrem(x1,x2)或mod(x1,x2)矩阵x1除以x2元素的余数sinh(x)双曲正弦log(x)ln xcosh(x)双曲余弦log2(x)long2 xmedian(x)各列元素的中间值real(x)x的实部log10(x)lg xprod(m:n)m(m+1)(n-1),m a=I am a sutdentl 字符串的输出显示命令disp(zs),输入参数zs可以是数值变量、字符串变量和被界定的字符串,但每一次只能有一个内容,各变量之间用空格分开。空格也可以用字符命令blanks(n)控制。 a=sint;b=exp(t);c=lnt;t=0.1:0.2:pi/4;d= t sint exp(t) lnt ;disp(d),disp(t sin(t) exp(t) log(t)l 格式化数据显示命令为了使输出的数据按规定格式(表示方式、小数点位数等)显示,常用命令 sprintf(Z,S1,S2)输入参数的第一部分Z由两部分组成(这两部分可以交错混合排列);控制的第二部分数据显示S1、S2显示形式的“格式”,格式符及其意义如下表,两个格式符空格的大小就是数据显示时的间距。格式显示格式格式符显示格式%e指数格式%g自动选择指数%f小数格式%m.nf数据共占m个字符宽度,显示n位小数%d十进制整数格式n换行符【例2-17】分两行输出自然数e,ln 5和最小浮点数eps的符号(即表头)和数值。 a=exp(1) log(5) eps; b=sprintf( e ln5 epsn %9.3f; %f; %e;,a)2 自定义函数求值可以用数值或符号变量表达式、内联函数命令、自己编写的M-函数文件等多种方法自定义函数、然后进行函数的求值运算。(1)用数值变量表达式自定义函数。四则运算中必须用数组符号算法符号,否则称为矩阵函数;表达式使用时“一次性”的,再使用需要重新输入;输入表达式前必须先给数值变量赋值。(2)用字符变量表达式定义函数把函数表达式定义成字符串表达式(自定义函数),给字符串赋值以后,通过数值转换命令eval将字符串转换为数值,从而得出函数值。表达式两端必须加单引号界定,使之被定义为字符串表达式。(3)用内联函数命令自定义函数内联函数命令为fun1_1=inline(字符串表达式)【例2-48】已知,用三种方法求。数值变量法: A=3 2*pi 9;6 5 3*pi; f1=A.3+sin(A).2+exp(-A)字符变量函数法: fx1=A.3+sin(A).2+exp(-A); A=3 2*pi 9;6 5 3*pi;fx1_A=eval(fx1)内联函数法: fx2=inline(A.3+sin(A).2+exp(-A); A=3 2*pi 9;6 5 3*pi;fx2(A) 2.2.2 符号变量(略)2.2.3 符号矩阵的创建方法 Y=sym(a 5*b+1;c-sin(a) b+3)2.2.4 符号矩阵的运算 符号矩阵的加法、乘法、点乘法: X=sym(a/b,sin(a);b4,8);Y=sym(3/a,cos(b);b3,3); X+Y,X*Y,X.*Y符号矩阵的求逆运算: inv(X)对矩阵各元素进行因式分解: A=sym(x/(x2-5*x-6),2*x/(x2-2*x+1); factor(A)将符号矩阵的各元素展开: A=sym(cos(x-y),sin(x+y);exp(x-y),(x-1)3); expand(A)同次幂系数合并: syms x y,collect(x2*y+x*y-2*x2-3*x)求极限:格式,limit(F,x,a,right或left),right,left表左右极限,缺省时表极限。 syms x m a,limit(x(1/m)-a(1/m)/(x-a),x,a)求导数命令,格式:diff(S,v,n),S为函数,v为求导的指定自变量,n为求导阶数。【例2-29】已知二元函数,求、默认变量x: syms x y,z=x*y*exp(sin(pi*x*y);diff(z)指定变量y: diff(z,y)泰勒展开式: syms x,taylor(exp(2*x)2.3 基本绘图方法Matlab提供了丰富的绘图功能,在绘图时,每个图形元素(如坐标轴或图形上的曲线、文字等)都是一独立的对象,被分配给一个句柄(handle),用户只需对该句柄进行操作就可以独立地修改一个图形元素,而不影响图形的其他部分。2.3.1 二维图形函数与调用方法常用的绘图函数plot绘制二维图形,x轴和y轴为线性坐标semilogx绘制二维图形,x轴为对数坐标,y轴为线性坐标semilogy绘制二维图形,x轴为线性坐标,y轴为对数坐标loglog绘制二维图形,x轴和y轴均为对数坐标plotyy绘制二维图形,在图形的左右各有一个y轴polar绘制极坐标曲线grid在图形窗口添加网(grid on)或去掉网(grid off)zoom允许(zoom on)或不允许(zoom off)对图形进行放大缩小操作ginput用鼠标获取图形中点的坐标patch填充二维或三维坐标中的二维图形fill填充二维坐标中的二维图形1基本二维图形Plot(X,Y,S)X为横坐标,Y为纵坐标,S是修饰曲线的标记符,包含标志拐点的点型符号、曲线的线性符号和色型符号,分布标记数据点位置、曲线类型和曲线色彩。常用的绘图选项选项含义选项含义选项含义-实线c青色D用菱形标出数据点-虚线w白色V用下三角形标出数据点:点线k黑色用上三角形标出数据点-.点画线*用*号标出数据点用右三角形标出数据点g绿线o用圆圈标出数据点H用六角形标出数据点b蓝线x用叉号标出数据点P用五角形标出数据点y黄线+用加号标出数据点m洋红s用正方形标出数据点画实线可以在参数S后加写“linewidth,n”,用以控制线条宽度,n标志线宽,也可在绘图窗中单击快捷按钮,用其菜单进行编辑。【例2-34】 y=3 7 9 1 5 2 8; subplot(1,2,1),plot(y,linewidth,2),grid又如: x=3 3 9;8 1 2;1 8 5;7 9 1; subplot(1,2,2),plot(x),xlabel(x),ylabel(y)2.特殊坐标二维图形极坐标曲线: theta=0:0.1:8*pi; polar(theta,cos(4*theta)+1/4)对数坐标曲线: x=0:0.1:2*pi; y=sin(x);semilogx(x,y);grid on【例3-27】执行下列程序,比较在不同坐标系下的图形特点。theta=0:0.1:6*pi; r=cos(theta/3)+1/9; subplot(2,2,1),polar(theta,r) subplot(2,2,2),plot(theta,r) subplot(2,3,4),semilogx(theta,r) subplot(2,3,5),semilogy(theta,r) subplot(2,3,6),loglog(theta,r)双y轴图形: x=0:0.01:5;y=exp(x);plotyy(x,y,x,y,semilogy,plot),grid复数数据,plot(x,y),不论参数x、y那个是复数,都将忽略掉虚部数据,只绘制该复数的实部数据,其余用法和绘制与一般实数数据相同。plot(z)绘图时,以复数的实部为横坐标,虚部为纵坐标绘制实部和虚部的关系曲线。 t=0:0.1:2*pi;x=sin(t);y=cos(t);z=x+y*i;plot(t,z),grid t=0:0.1:2*pi;x=sin(t);y=cos(t);z=x+y*i;plot(z),grid2.3.2 二维图形处理图形标注x=(0:0.1:2*pi); y1=2*exp(-0.5*x)*1,-1; y2=2*exp(-0.5*x).*sin(2*pi*x); x1=(0:12)/2; y3=2*exp(-0.5*x1).*sin(2*pi*x1); plot(x,y1,g:,x,y2,b-,x1,y3,rp) title(曲线及其包络线); xlabel(变量x); ylabel(变量y); text(3.2,0.5,包络线); text(0.5,0.5,曲线); text(1.4,0.15,离散数据点); legend(包络线,曲线y,离散数据点)坐标控制axis equal纵、横坐标轴采用等长刻度axis squae产生正方形坐标系(默认为矩形)axis auto使用默认设置axis off取消坐标轴axis on显示坐标轴给坐标轴加网格线 x=(0:0.1:2*pi); y1=2*exp(-0.5*x)*1,-1; y2=2*exp(-0.5*5).*sin(2*pi*x); plot(x,y1,g); hold on; plot(x,y2,b-); x1=(0:12)/2; plot(x1,y3,rp); grid on; box off; hold off;2.3.3 三维图形的基本函数建立三维图形的基本函数函数功能函数功能plot3建立三维线条图surfc建立带有基本等高线的表面图mesh建立网格图surfl建立带有指定方向照明的表面图meshc建立具有基本等高线的网格图surface建立表面图对象的低级函数meshz建立具有基准平面的网格图Fill3填充三维多边形surf建立表面图2.3.4 三维曲线图【例2-45】绘制三维曲线 t=pi:pi/200:8*pi; h=figure(1) ; set(h,color,1,1,1) ; subplot(1,2,1),plot3(cos(t),sin(t),t,b-) subplot(1,2,2),plot3(sin(t),cos(t),t,.)2.3.5 三维网格图所谓网格图就是把相邻的数据点连接起来形成网状曲面。【例2-46】绘制函数x,y=meshgrid(-8:0.5:8,-10:0.5:10); R=sqrt(x.2+y.2)+eps; z=sin(R)./R; mesh(x,y,z)在以上程序末尾加hiden off可以显示被遮住部分的效果。2.3.6 三维曲面图所谓三维曲面图,就是把三维网格图表面的网格围成的小片区域用不同颜色填充所形成的彩色曲面。【例2-47】绘制标准曲面 subplot(2,2,1),sphere(3); title(n=3),axis equal; subplot(2,2,2),sphere(6); title(n=6),axis equal; subplot(2,2,3),sphere; title(n=20),axis equal; subplot(2,2,4),sphere(50); title(n=50),axis equal;【例2-49】绘制三维曲面图x,y=meshgrid(-8:0.5:8,-10:0.5:10);R=sqrt(x.2+y.2)+eps;z=sin(R)./R;surf(x,y,z);colorbarcolorbar命令的作用是在三维曲面图旁边绘制一个可以指示高度的色彩条,使三维曲面的可读性更强。handing flat 去掉各片连接处的线条,平滑当前图形的颜色。shading interp 去掉连接线条,在各片之间使用颜色插值,使得片与片之间以及片内部的颜色均过渡。shading faceted 默认值,带有连接线条的曲面。可以将surf换为surfc或surfl。2.3.7 专用图形1 条形图bar,bar3分别绘制二维和三维竖条形图;barh和bar3h分别绘制二维和三维水平条形图。四个函数用法相似。 Bar(x,y):x是横坐标向量,y是向量或矩阵。y是向量时,每个元素对应一个竖条;y是m行n列矩阵时,将画出m组竖条,每组包括n个条。 bar(y):横坐标使用默认值1:m。 bar(x,y,width)或bar(y,widh):用width指定竖条的宽度,默认宽度是0.8.如果宽度大于1,那么条与条之间将重合。 bar(, grouped):产生组合的条形图。 bar(,stacked):产生堆叠的条形图。 bar(,linespec):指定条的颜色。 h=bar():返回补片对象的句柄向量。 Y=3,8,2;8,9,2;8,3,3;2,5,6;9,5,1; subplot(1,2,1),bar(Y),title(二维条形图); subplot(1,2,2),bar3(Y),title(三维条形图);2 直方图(统计拼数条形图)hist在直角坐标系中建立直方图,rose在极坐标系下建立直方图。 n=hist(y):指y按其中数据的大小分为10个相等的段,统计每段中的元素个数并返回给n。如果y是矩阵,那么按列分段。 n=hist(y,m):m是标量,用来设置分段的个数。 n=hist(y,x):x是向量,用来指定所分的每个数据段的中间值。 hist():不带输出参数时,直接绘制直方图。 y1=randn(10000,1); y2=rand(10000,1); subplot(1,2,1);hist(y1,20);title(正太分布); subplot(1,2,2);hist(y2,10);title(均匀分布);3 饼形图pie和pie3分别用于绘制二维和三维饼形图。 pie(x):x可以是向量矩阵。如果x是向量,则绘制各个元素在向量所有元素之和中所占的比例。 pie(x,explode):参数explode中的元素值非零时,该元素所对应的片和整个图形脱开。 pie(,labels):labels用于标注饼形图的字符串数组,它必须和x同维。若没有指定,则Matlab缺省的以该片所占的比例作为标注。 h=pie():返回包括补片和文本对象的句柄的向量。 cj=80,95,70,40;二维饼图 pie(cj,0,0,1,0)三维饼图 pie3(cj,0,0,1,0,语文28%,数学33%,外语25%,政治14%); 4 离散数据图函数stem和stem3分别用来绘制二维和三维的离散图形,用法与plot和plot3用法一致,区别在于这两个函数用选项fill来填充图中的离散点标记。绘制离散数据图: x=linspace(0,2*pi,40);a=sin(2*x);b=cos(x);stem(x,a+b);hold on;plot(x,a);hold on;plot(x,b);hold off;用函数绘制三维空间中的火柴杆图,当数据较少时,这种效果较好。以下是一个螺旋线的例子。th=(0:127)/128*2*pi;x=th.*cos(th);y=th.*sin(th); stem3(x,y,th,fill);view(-158 66); xlabel(X轴);ylabel(y轴);zlabel(z轴); title(三维火柴杆图);hold on; plot3(x,y,th,k);hold off;画阶梯图时,相邻两点间的区间的值全部为两点中起点的值,两点间全部用阶梯值相连。阶梯图对于绘制数字系统的时程曲线比较有用。 alpha=0.01;beta=0.5;t=0:10; f=exp(alpha*t).*sin(2*beta*t);stairs(t,f); hold on;plot(t,f,-*);hold off; label=函数ealpha*t)sin2beta*t的阶梯图; text(0.5,0.2,label,FontSize,12); xlabel(t=0:10,FontSize,14);axis(0,10,-1.2,1.2)三维离散序列图绘制应用实例。 t=0:pi/10:6*pi; x=exp(-t/10).*cos(t); y=2*exp(-t/10).*sin(t); stem3(x,y,t,filled) hold on plot3(x,y,t) xlabel(X);ylabel(Y);zlabel(Z)5 等高线函数contour和contour3用来绘制二维和三维等高线,调用方法如下: contour(z):直接绘制矩阵z的等高线。 contour(x,y,z):用x和y指定等高线的x、y坐标。 contour(z,n)和contour(x,y,z,n):用标量n指定绘制等高线的线条数,即从最低位置到最高位置所用的条线条总数。 contour(z,v)和contour(x,y,z,v):向量v中的元素指定绘制等高线的位置,该向量的长度对应绘制的线条数。 c,h=contour():返回等高线矩阵c和列向量h,h是线条对象或补片对象的句柄。 Clabel(c,h):标记等高线的数值,参数(c,h)必须是contour命令的返回值,即c,h=contour()。说明:n指定要绘制出n条等高线,可以缺省,系统默认;若指定矩阵x和y,则居于矩阵x和y绘制三维等高线;参数option是个字符串参数,指定等高线型和颜色,默认为黄色。二维等高线: x,y,z=peaks;contour(x,y,z,15);三维等高线: x,y,z=peaks; contour3(x,y,z,20); colormap(hsv)【例2-52】利用函数clabel绘制下列函数的曲面及其对应的三维等高线。x=-3:0.25:3;y=x;X,Y=meshgrid(x,y);Z=3*(1-X).2.*exp(-(X.2)-(Y+1).*2)-10*(X/5-X.3-Y.5).*exp(-X.2-Y.2)-1/3*exp(-(X+1).2-Y.2);subplot(2,2,1);mesh(X,Y,Z) xlabel(x);ylabel(y);zlabel(z);title(Peaks函数图形); subplot(2,1,2);c,h=contour3(x,y,Z); clabel(c,h) xlabel(x);ylabel(y);zlabel(z);title(Peaks函数的三维等高线);6 瀑布图函数waterfall绘制瀑布图,用法和mesh类似。 waterfall(peaks); axis tight7 简易函数绘图三维图形简易绘制函数:函数说明ezplot3(funx,funy,tmin,tmax)在tmin,tmax范围下绘制(funx(t),funy(t),funz(t)三维曲线。ezmesh(fun,domain)在domain指定的区域绘制fun指定的二元函数的网线图ezmeshc(fun,domain)在domain指定区域绘制fun指定的二元函数的网线图,并在x-y平面叠加绘制等高线。ezsurf(fun,domain)在domain指定的区域绘制fun指定的二元函数的表面图ezsurfc(fun,domain)在domain指定的区域绘制fun指定的二元函数的表面图,并在x-y平面叠加绘制等高线。【例2-35】利用简易三维绘图函数ezplot3、ezmesh、ezsurf和ezsurfc分别绘制三维图形。 subplot(2,2,1);ezplot3(sin(t),cos(t),sin(2*t),0,2*pi); subplot(2,2,2);ezmesh(peaks,-5 5 -5 5); subplot(2,2,3);ezsurf(x,y)(x.2+y.2),-5 5 -5 5); subplot(2,2,4);ezsurfc(x,y)(x.2+y.2),-5 5 -5 5)peaks是Matlab内置的一个二元函数,因此peaks代表这一函数的句柄,sin和cos类似。8 圆柱体图利用圆柱体表面数据产生命令cylinder产生一组圆柱体表面的坐标矩阵值,然后由该矩阵值利用mesh或surf命令来绘制出这个圆柱体图形。常用的调用格式如下: X,Y,Z=cylinder(r,n):产生三个维数为的矩阵X、Y、Z(不直接绘制圆柱体),它们分别表示圆柱体表面上一系列数据点(x,y,z)的坐标值。利用这些矩阵数据,用mesh和surf命令来绘制出指定大小和位置的圆柱体图形。参数r为一个向量,它表示等距离分布的沿圆柱体基线在其单位高度的半径。r的默认值为r=1 1。参数n确定了圆柱体绘制的精度。N值越大,数据点越多,绘制越精确。 cylinder(r,n):产生圆柱体表面的数据点,并直接由surf命令绘制这个圆柱体。 cylinder(r):以默认的参数n=20绘制基线为r的圆柱体。 cylinder:以默认参数r=1 1、n=20绘制单位圆柱体。【例2-54】利用函数cylinder绘制出两种圆柱体。 subplot(1,2,1);X,Y,Z=cylinder;mesh(X,Y,Z);title(单位圆柱体);subplot(1,2,2);t=1:10;r(t)=t.*t;X,Y,Z=cylinder(r,40);mesh(X,Y,Z);title(一般圆柱体)9 球面图先利用表面数据产生命令sphere产生一组单位球面的坐标矩阵值,然后由该矩阵利用mesh和surf命令来绘制出球面图形。常用调用格式如下: sphere(n):产生单位球面的数据点,并直接由surf命令绘制出这个单位球面。 X,Y,Z=sphere(n):产生三个维数为的矩阵X、Y、Z(不直接绘制圆柱体),它分别表示球面表面上一系列数据点(x,y,z)的坐标值。【例2-55】利用sphere绘制出两种不同的曲面。 subplot(1,2,1);sphere(25);title(单位球面); subplot(1,2,2);X,Y,Z=sphere(25);mesh(X,Y,2*(Z+1);title(移位和放大的球面);2.3.8 三维绘图的高级应用1 透明度作图hidden on:对当前图形打开隐藏线移除的状态,因此三维图后方的线会被前面的线遮住,就是会透视被叠压的图形。hidden off:对当前图形关闭隐藏移除的状态,因此三维图后方的线将不会被前面的线遮住,也就是说该三维图会变成一个透明的图。hidden:切换hidden为on或off的状态。【例2-56】绘制一个球体包住网络图,并将球体设置为透明。 x,y,z=sphere(20); x=8.2*x;y=8.2*y;z=8.2*z; peaks; shading interp; %使用imterp渲染方式 colormap(hot); %使用hot颜色映射值 hold on mesh(x,y,z) %以mesh来绘制球体数据 hold off axis equal %产生等长的坐标轴以便于球体的显示 axis off %将坐标轴隐藏在程序的末尾加上hidden off将球体设置为透明。2 立体可视化立体可视化需要构建的是立体而不是一些简单的表面,因此需要三维数组作为输入参数,其中三维数组的每一维分别代表一个坐标轴,三维数组中的点定义了坐标轴格栅和坐标轴上的坐标点。如果要绘制的函数是一个标量函数,则绘制函数需要四个三维数组,其中三个数组各代表一个坐标轴,第四个数组代表了这些坐标处的标量数据,这些数组通常记作X、Y、Z和V。如果要绘制的函数是一个向量函数,则绘图函数需要6个三维数组,其中3个各表示一个坐标轴,3个用来表示坐标点处的向量,这些数组通常记作X、Y、Z、U、V和W。需要对立体和向量的术语有所了解。比如散度(Divergence)和旋度(Curl)用于描述向量过程,而等值面(Isosurfaces)和等值顶(Isocaps)则用于描述立体的视觉外观。先生成一个构建立体对象的坐标系:x=linspace(-3,3,13); y=1:20; z=-5:5; X,Y,Z=meshgrid(x,y,z); size(X)运行结果:ans = 20 13 11其中X、Y、Z为定义格栅的3个三维数组,分别从x、y、z经过三维格栅扩展形成的。需要定义一个以三个数组为自变量的标量函数V: V=sqrt(X.2+cos(Y).2+Z.2);利用标量函数定义一个立体对象所需要的数据已全部给出。为了使立体对象可视化,用下面的代码查看该立体对象的一些截面。 slice(X,Y,Z,V,0,3,5,15,-3,5) xlabel(X_axis);ylabel(Y_axis)显示的立体图形在x=0,x=3,y=5,y=15,z=-3,z=5处的截面。 【例2-58】采用正弦函数来截取立体图形。在上例的基础上: xs,ys=meshgrid(x,y); zs=sin(-xs+ys/2); slice(X,Y,Z,V,xs,ys,zs)【例2-59】添加等高线x=linspace(-3,3,13);y=1:20;z=-5:5;X,Y,Z=meshgrid(x,y,z); V=sqrt(X.2+cos(Y).2+Z.2); slice(X,Y,Z,V,0,3,5,15,-3,5) hold on h=contourslice(X,Y,Z,V,3,5,15,) set(h,EdgeColor,k,Linewidth,1.5) xlabel(X_axis); ylabel(Y_axis);zlabel(Z_axis);【例2-60】绘制等值面。 x=linspace(-3,3,13);y=1:20;z=-5:5; X,Y,Z=meshgrid(x,y,z); V=sqrt(X.2+cos(Y).2+Z.2); X,Y,Z,V=flow(13); fv=isosurface(X,Y,Z,V,-2); subplot(1,2,1);p=patch(fv); set(p,FaceColor,.5 .5 .5,EdgeColor,Black); %设置面属性 view(3) axis equal tight %按比例显示图形,打开网格 grid on subplot(1,2,2) p=patch(shrinkfaces(fv,.3); %shrinkfaces使表面收缩 set(p,FaceColor,.5 .5 .5,EdgeColor,Black); view(3) axis equal tight grid on当显示立体图时,仅仅是为了观察其大体结构时,就没有必要针对所有的数据点作图,因为数据点太多,会降低显示的速度。利用函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论