




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二 三维绘图一绘制三维曲线的基本函数最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,可以用来绘制三维曲线。其调用格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,)其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。例513 绘制空间曲线该曲线对应的参数方程为t=0:pi/50:2*pi;x=8*cos(t);y=4*sqrt(2)*sin(t);z=-4*sqrt(2)*sin(t);plot3(x,y,z,p);title(Line in 3-D Space);text(0,0,0,origin);xlabel(X);ylabel(Y);zlabel(Z);grid;二三维曲面1平面网格坐标矩阵的生成当绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为Da,bc,d,然后将a,b在x方向分成m份,将c,d在y方向分成n份,由各划分点做平行轴的直线,把区域D分成mn个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。产生平面区域内的网格坐标矩阵有两种方法:利用矩阵运算生成。x=a:dx:b;y=(c:dy:d);X=ones(size(y)*x;Y=y*ones(size(x);经过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。利用meshgrid函数生成;x=a:dx:b;y=c:dy:d;X,Y=meshgrid(x,y);语句执行后,所得到的网格坐标矩阵和上法,相同,当x=y时,可以写成meshgrid(x)2绘制三维曲面的函数Matlab提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用来绘制三维网格图,而surf用来绘制三维曲面图,各线条之间的补面用颜色填充。其调用格式为:mesh(x,y,z,c)surf(x,y,z,c)一般情况下,x,y,z是维数相同的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。c省略时,Matlab认为c=z,也即颜色的设定是正比于图形的高度的。这样就可以得到层次分明的三维图形。当x,y省略时,把z矩阵的列下标当作x轴的坐标,把z矩阵的行下标当作y轴的坐标,然后绘制三维图形。当x,y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于必须等于z的行,x,y向量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,然后绘制三维曲线。例515 用三维曲面图表现函数 :为了便于分析三维曲面的各种特征,下面画出3种不同形式的曲面。%program 1x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);mesh(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh); pause;%program 2x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);surf(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(surf); pause;%program 3x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);plot3(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(plot3-1);grid;程序执行结果分别如上图所示。从图中可以发现,网格图(mesh)中线条有颜色,线条间补面无颜色。曲面图(surf)的线条都是黑色的,线条间补面有颜色。进一步观察,曲面图补面颜色和网格图线条颜色都是沿z轴变化的。用plot3 绘制的三维曲面实际上由三维曲线组合而成。可以分析plot(x,y,z)所绘制的曲面的特征。例516 绘制两个直径相等的圆管相交的图形。m=30;z=1.2*(0:m)/m;r=ones(size(z);theta=(0:m)/m*2*pi;x1=r*cos(theta);y1=r*sin(theta);%生成第一个圆管的坐标矩阵z1=z*ones(1,m+1);x=(-m:2:m)/m;x2=x*ones(1,m+1);y2=r*cos(theta);%生成第一个圆管的坐标矩阵z2=r*sin(theta);surf(x1,y1,z1); %绘制竖立的圆管axis eq l ,axis offhold onsurf(x2,y2,z2); %绘制平放的圆管axis eq l ,axis offtitle (两个等直径圆管的交线);hold off例517 分析由函数 构成的曲面形状与平面z=a的交线。此外,还有两个和mesh函数相似的函数,即带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,其用法和mesh类似。不同的是,meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。surf函数也有两个类似的函数,即具有等高线的曲面函数surfc和具有光照效果的曲面函数surfl。例518 在xy平面内选择-8, 88, 8绘制函数,x,y=meshgrid(-8:0.5:8);z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2+eps);s plot(2,2,1);meshc(x,y,z);title(meshc);s plot(2,2,2);meshz(x,y,z);title(meshz);s plot(2,2,3);surfc(x,y,z);title(surfc);s plot(2,2,4);surfl(x,y,z);title(surfl);3标准三维曲面Matlab提供了一些函数用于绘制标准三维曲面,这些函数可以产生相应的绘图数据,常用于三维图形的演示。如,sphere函数和cylinder函数分别用于绘制三维球面和柱面。sphere函数的调用格式为:x,y,z=sphere(n);该函数将产生(n+1)(n+1矩阵x,y,z 。采用这三个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。cylinder函数的调用格式为:x,y,zcylinder(R,n)其中R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。如:cylinder(3)生成一个圆柱,cylinder(10,1)生成一个圆锥。而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一个正弦圆柱面。另外Matlab还提供了一个peaks函数,称为多峰函数,常用于三维曲面的演示。该函数可以用来生成绘图数据矩阵,矩阵元素由函数:在矩形区域3 33 3的等分网格点上的函数值确定。如:z=peaks(30)将生成一个3030矩阵,例519 绘制标准三维曲面图形t=0:pi/20:2*pi;x,y,z=cylinder(2+sin(t),30);s plot(1,3,1);surf(x,y,z);s plot(1,3,2);x,y,z=sphere;surf(x,y,z);s plot(1,3,3);x,y,z=peaks(30);meshz(x,y,z);3其他三维图形。在介绍二维图形时,曾经提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,其函数分别为bar3,stem3,pie3和fill3。bar3绘制三维条形图,常用格式为:bar3(y);bar3(x,y)在第一种格式中,y的每个元素对应于一个条形。第二种格式在x指定的位置上绘制y中元素的条形图。stem3函数绘制离散序列数据的三维杆图,常用格式为:stem3(z)stem3(x,y,z)第一种格式将数据序列z表示为从xy平面向上延伸的杆图,x和y自动生成。第二种格式在x和y指定的位置上绘制数据序列z的杆图,x,y,z的维数要相同。pie3函数绘制三维饼图,常用格式为:pie3(x)x为向量,用x中的数据绘制一个三维饼图。fill3函数可在三维空间内绘制出填充过的多边形,常用格式为:fill3(x,y,z,c)用x,y,z做多边形的顶点,而c指定了填充的颜色。例520 绘制三维图形。1绘制魔方阵的三维条形图2以三维杆图形式绘制曲线y=2sinx 3已知x 2347,1827,2043,3025 ,绘制三维饼图 4用随机的顶点坐标值画出5个黄色三角形s plot(2,2,1);bar3(magic(4);s plot(2,2,2);y=2*sin(0:pi/10:2*pi);stem3(y);s plot(2,2,3);pie3(2347,1827,2043,3025);s plot(2,2,4);fill3(rand(3,5),rand(3,5),rand(3,5),y);除了上面讨论的三维图形外,常用的图形还有瀑布图和三维曲面的等高线图。绘制瀑布图用waterfall函数,用法和meshz函数相似,只是它的网格线在x轴方向出现,具有瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。例521 绘制多峰函数的瀑布图和等高线图。s plot(1,2,1);X,Y,Z=peaks(30);waterfall(X,Y,Z);xlabel(XX);ylabel(YY);zlabel(ZZ);s plot(1,2,2);contour3(X,Y,Z,12,k);%其中12代表高度的等级数xlabel(XX);ylabel(YY);zlabel(ZZ);三三维图形的精细处理一视点处理在日常生活中,从不同的角度观察物体,所看到的物体形状是不一样的。同样,从不同视点绘制的三维图形的形状也是不一样的。视点位置可由方位角和仰角表示。方位角Matlab提供了设置视点的函数view,其调用格式为:view(az,el)其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。例522 从不同视点绘制多峰函数曲面。s plot(2,2,1);mesh(peaks);view(-37.5,30);title(1);s plot(2,2,2);mesh(peaks);view(0,90);title(2);s plot(2,2,3);mesh(peaks);view(90,0);title(3);s plot(2,2,4);mesh(peaks);view(-7,-10);title(4);二色彩处理三图形的裁剪处理Matlab定义的NaN常数可以用于表示那些不可使用的数据,利用这些特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。例如,要削掉正弦波顶部或底部大于0.5的部分,可使用下面的程序。x=0:pi/10:4*pi;y=sin(x);i=find(abs(y)0.5);x(i)=NaN;plot(x,y);例524 绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。x,y,z=sphere(25);%生成外面的大球z1=z;z1(:,1:4)=NaN;%将大球裁去一部分c1=ones(size(z1);surf(3*x,3*y,3*z1,c1); %生成里面的小球hold onz2=z;c2=2*ones(size(z2);c2(:,1:4)=3*ones(size(c2(:,1:4);surf(1.5*x,1.5*y,1.5*z2,c2);colormap(0 1 0;0.5 0 0;1 0 0);grid onhold off色图中使用三种颜色,外面的球是绿色,里面的球采用深浅不同的两种红色。四隐函数作图如果给定了函数的显式表达式,可以先设置自变量向量,然后根据表达式计算函数向量,从而用plot等函数绘制出图形。但是当函数采用隐函数形式时,如: ,则很难利用上述方法绘制图形。Matlab提供了一个ezplot函数绘制隐函数图形。用法如下: 对于函数f=f(x),ezplot的调用格式为:ezplot(f),在默认区间(-2pi,2pi)绘制图形。ezplot(f,a,b),在区间(a,b)绘制 对于隐函数f=f(x,y),ezplot的调用格式为;ezplot(f),在默认区间(-2pi,2pi),(-2pi,2pi)绘制f(x,y)=0的图形。ezplot(f,xmin,xmax,ymin,ymax);在区间 绘制图形。ezplot(f,a,b),在区间(a,b),(a,b)绘制 对于参数方程x=x(t),y=y(t),ezplot函数的调用格式为:ezplot(x,y),在默认区间 绘制x=x(t),y=y(t)图形。ezplot(x,y,tmin,tmax),在区间(tmin,tmax)绘制x=x(t),y=y(t)图形。例525 隐函数绘图举例。s plot(2,2,1);ezplot(x2+y2-9);axis eq l;s plot(2,2,2);ezplot(x3+y3-5*x*y+1/5)s plot(2,2,3);ezplot(cos(tan(pi*x),0,1);s plot(2,2,4);ezplot(8*cos(t),4*sqrt(2)*sin(t),0,2*pi)rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的mn的随机数矩阵 (现成的函数)另外:Matlab随机数生成函数betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器完整的中断向量表程序如下: .global _vectors ;定义一个能被外部(C语言程序)引用的变量 .global _c_int00 .global _vector1 .global _vector2 .global _vector3 .global _vector1 .global _vector5 .global _vector6 .global _vector7 .global _vector8 .global _vector9 .global _vector10 .global _vector11 ; Hookup the c_int08 ISR(连接这个中断设置寄存器) in main() .global _vector12 ; Hookup the c_int08 ISR in main() .global _vector13 .global _vector14 .global _vector15*-* Global symbols referenced in this file but defined somewhere else.* Remember that your interrupt service routines need to be referenced here.*- .ref _c_int00 ;reset ISR(复位中断设置寄存), .ref表明一个或多个在另一个模块中定义而在前模块中要用到的符号*-* This is a macro that instantiates one entry in the interrupt service table.*-VEC_ENTRY .macro addr ;中断返回函数 STW B0,*-B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15+,B0 NOP 2 NOP NOP .endm*-* This is a dummy interrupt service routine used to initialize the IST.*-_vec_dummy: ;初始化IST寄存器(中断向量表起始地址寄存器,用于设置中断服务程序存放的地址) B B3 NOP 5*-* This is the actual interrupt service table (IST). It is properly aligned and* is located in the subsection .text:vecs. This means if you dont explicitly* specify this section in your linker command file, it will default and link* into the .text section. Remember to set the ISTP(中断向量表起始地址寄存器) register to point to this* table.*-.sect .vecs ;定义初始化带名称的段.align 1024 ;分配程序页_vectors:_vector0: VEC_ENTRY _c_int00 ;RESET(应用程序的入口)_vector1: VEC_ENTRY _vec_dummy ;NMI(非屏蔽中断,用于处理极为关键的任务)_vector2: VEC_ENTRY _vec_dummy ;RSVD_vector3: VEC_ENTRY _vec_dummy_vector4: VEC_ENTRY _vec_dummy_vector5: VEC_ENTRY _vec_dummy_vector6: VEC_ENTRY _vec_dummy_vector7: VEC_ENTRY _vec_dummy_vector8: VEC_ENTRY _vec_dummy_vector9: VEC_ENTRY _vec_dummy_vector10: VEC_ENTRY _vec_dummy_vector11: VEC_ENTRY _vec_dummy ; Hookup the c_int08 ISR in main()_vector12: VEC_ENTRY _vec_dummy ; Hookup the c_int08 ISR in main()_vector13: VEC_ENTRY _vec_dummy_vector14: VEC_ENTRY _vec_dummy_vector15: VEC_ENTRY _vec_dummyDM642的中断分析理解在DSP的dm642平台上,以添加串口中断为例,分析理解其中断含义和过程。 对于dm642而言,其连接了752B来实现异步串行中断。752B产生inta和intb中断,经过cpld相与后连接dm642的外部中断5。因此该中断的实现,首先是要配置752B为中断模式,其次是添加DSP的外部中断5。具体过程如下。1、在工程的*.asm文件中(如本人做的是dm642,因此文件名为ves_dm642)中添加优先级向量。第一处修改如下:*-* Global symbols defined here and exported out of this file*- .global _vectors .global _c_int00 .global _vector1 .global _vector2 .global _vector3 .global _vector4 .global _Uartio ;添加的串口中断 .global _vector6 .global _vector7 .global _vector8 .global _vector9 .global _vector10 .global _VPCapChaAIsr ; Hookup the c_int08 ISR in main() .global _VPDispIsr ; Hookup the c_int08 ISR in main() .global _vector13 .global _timer1 ; .global _vector15 第二处修改如下:.sect .text:vecs .align 1024_vectors:_vector0: VEC_ENTRY _c_int00 ;RESET_vector1: VEC_ENTRY _vec_dummy ;NMI_vector2: VEC_ENTRY _vec_dummy ;RSVD_vector3: VEC_ENTRY _vec_dummy_vector4: VEC_ENTRY _vec_dummy_vector5: VEC_ENTRY _Uartio ;添加串口中断,注意名称和上面得保持一致。_vector6: VEC_ENTRY _vec_dummy_vector7: VEC_ENTRY _vec_dummy_vector8: VEC_ENTRY _vec_dummy _vector9: VEC_ENTRY _vec_dummy_vector10: VEC_ENTRY _vec_dummy_vector11: VEC_ENTRY _VPCapChaAIsr ; Hookup the c_int08 ISR in main()_vector12: VEC_ENTRY _VPDispIsr ; Hookup the c_int08 ISR in main()_vector13: VEC_ENTRY _vec_dummy_vector14: VEC_ENTRY _timer1 ;_vector15: VEC_ENTRY _vec_dummy、main.c文件中初始化中断,代码如下: IRQ_setVecs(vectors); /指向IRQ优先级向量表 IRQ_nmiEnable(); /int0-int3非屏蔽优先级中断使能 IRQ_globalEnable(); /全局中断使能 IRQ_map(IRQ_EVT_EXTINT5,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业务流程优化与再造实施框架
- (正式版)DB15∕T 3633-2024 《苜蓿越冬等级评定规范》
- 电梯维修考试题及答案
- 城市规划项目合作合同书
- 一职医学护理考试题库及答案
- 企业内部沟通会议纪要编写模板
- 专业技术类护理考试题库及答案
- 大专sql考试题及答案
- 稀有文物数字化保护承诺书(7篇)
- 写玉兰树的状物作文15篇
- 护士心理压力
- 小区广播系统设计方案
- 抗滑桩安全技术交底
- GB/T 5271.28-2001信息技术词汇第28部分:人工智能基本概念与专家系统
- 紧急采购申请单
- GA/T 1678-2019法庭科学鞋底磨损特征检验技术规范
- 《数字媒体专业认知实习》课程教学大纲
- 中西方婚礼文化差异毕业论文Word版
- 预备队员考核表
- 庆阳地区地下水供水水文地质条件评价
- 储能项目竣工报告
评论
0/150
提交评论