欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    MATLAB总结.docx

    • 资源ID:12368216       资源大小:33.69KB        全文页数:26页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MATLAB总结.docx

    1、MATLAB总结%polyfit用法1、理论上只能算斜率延长,但有一些简化方法,但本质上还是通过算斜率实现的,下面就是应用polyfit来避免自己求斜率.x1=1,2;x2=5,8;X=x1(1),x2(1);Y=x1(2),x2(2);p=polyfit(X,Y,1);%多项式拟合,后面的1表示一阶多项式,即直线%函数返回的p是对应多项式按次数下降的系数,一阶显然有2个系数x=0:10;y=polyval(p,x);%通过p求对应x的值plot(x,y)2、polyfit函数的意思同上.不过你有几个点,你自己最好先把点画出来,看看她应该大致符合什么趋势,在选择不同的拟合函数.polyfit只

    2、能用于多项式拟合,如果是其他的拟合模型函数,一般需要其他诸如nlinfit等拟合函数,自己编写函数模型.%矩阵开方sqrt()和sqrtm()的区别要分清这两个函数的区别我们首先看乘方的区别。在Matlab中运行下列语句。“两个大于号”后面是需要在Matlab中输入的命令,其他的是Matlab中的结果输出。 A=1,2;3,4A = 1 2 3 4 R1=A*AR1 = 7 10 15 22 R2=A2R2 = 7 10 15 22 R3=A.*AR3 = 1 4 9 16 R4=A.2R4 = 1 4 9 16这几句清晰地解释了矩阵乘法与矩阵乘方的关系、矩阵点乘(元素对元素)与矩阵点乘方的关

    3、系。下面我们来看开方。 先生出一个方便做开方运算的矩阵 B=A*AB = 10 14 14 20我们看sqrt()与矩阵点乘(点乘方)之间的关系: C=sqrt(B)C = 3.1623 3.7417 3.7417 4.4721 R5=C.*CR5 = 10 14 14 20 R6=C.2R6 = 10 14 14 20即sqrt()得到的结果与点乘有关。与矩阵乘法(乘方)有关的命令是sqrtm(). D=sqrtm(B)D = 2.058 2.401 2.401 3.773 D*Dans = 10 14 14 20 D2ans = 10 14 14 20接下来讲的就是.5, .5 与sqrt

    4、(),sqrtm()的关系了。他们的对应关系很简单,看下列代码就明白了。 sqrt(C)ans = 1.7783 1.9343 1.9343 2.1147 C.5ans = 1.7783 1.9343 1.9343 2.1147 sqrtm(C)ans = 1.222 1.2919 1.2919 1.6743 C.5ans = 1.222 1.2919 1.2919 1.6743%-按钮创建一、比如创建一个打开的按钮: uicontrol(string,打开) 即可二、str = 按钮文字多行显示;uicontrol(Style, pushbutton, Units, normalized,

    5、FontSize, 12,position, 0.4 0.4 0.3 0.2, string, str);三、hf=figure(Color,0.55,0.658,0.257,Position,100,200,400,200,.Name,图片,NumberTitle,off,MenuBar,none);set(gcf,outerposition,get(0,screensize);h_pause = uicontrol(hf,style,pushbutton,position,100 25 80 30,string,pause,callback,uiwait(hf);h_goon = uico

    6、ntrol(hf,style,pushbutton,position,300 25 80 30,string,go on,callback,uiresume(hf);for i=45:53 %45到53是图片名字 k=imread(num2str(i),.jpg); imagesc(k); pause(1); drawnow;end%-保存图片的方法1、可以用print命令保存:print(1,-djpeg,picname.jpeg)注:第一个参数表示图形窗口的句柄号;第二个参数,在引号内表示保存为jpeg格式,第三个参数为文件名。2、可以用saveas命令保存:saveas(gcf,picn

    7、ame,jpg)注:第一个参数是matlab获取图形句柄号的函数名,第二个参数,在引号内是希望保存的文件名,这里不要写后缀,第三个参数是文件类型。3、FG=getframe(gcf);imwrite(FG.cdata,FG.jpg)4、对于画图循环体,加这句应该就能保存了,k为保存的第几幅图。saveas(gcf,D:MATLAB7work,yanbao,num2str(k),.jpg);%- 一、动画制作方法 Matlab提供了许多与动画制作相关的函数,能够比较 容易完成动画的制作。 (一)时间函数 1. Timer 函数 可以使用Timer函数创建计时器对象,如: 当前目录中的程序名称,其

    8、程序见下一页。 mytimer=timer(TimerFcn,fPatch,StartDelay,6); start(mytimer) 关键词 程序运行后,6秒钟后才执行程序fPatch.m。 用start()函数激活计数器对象,6秒钟后才执行程序 fPatch.m。 程序:fpatch.m 功能:使用patch函数绘制正方体网格图与表面图。 vert=1 1 1;1 2 1;2 2 1;2 1 1;1 1 2;1 2 2;2 2 2;2 1 2; fac=1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8; subplot(1,3,1) patch

    9、(faces,fac,vertices,vert,FaceColor,w); view(3); subplot(1,3,2) patch(faces,fac,vertices,vert,FaceVertexCData,hsv(6),FaceColor,flat); view(3); subplot(1,3,3) patch(faces,fac,vertices,vert,FaceVertexCData,hsv(8),FaceColor,interp); view(3); 正方体网格图 各面着色正方体 插值着色正方体 一个计时器中可以同时对多个M文件进行不同的定时 操作。如: Mtimer=ti

    10、mer(TimerFcn,file1,StartFcn, file2,StopFcn, file3,ErrorFcn, file4) 该计时器对象执行如下操作: ? 将file1作为基本计时器代码执行; ? 当使用start函数启动计时器时执行file2; ? 当使用stop函数终止计时器时执行file3; ? 出错时执行file4。 2. 当前日期与时间 使用clock函数可以返回当前时间。 clock ans= 1.0e+003 2.0060 0.0090 0.0190 0.020 0.0310 0.0384 当前机器时间是2006年9月19日20点31分38.4秒。 使用now函数将返回

    11、当天的日期值。 format long;now ans = 7.336418131145024e+005 这个时间的单位是天,转换成普通日期是2008年8月21日 19点30分53秒左右(误差小于1分钟)。 使用datestr()函数可以将now函数返回的日期值 转换成日期字符串。 datestr(7.336418131145024e+005) ans= 21-Aug-2008 19:30:53 使用date函数可以返回dd-mmm-yy格式的当天日期。 date ans= 21-Aug-2008 使用datenum()函数可以将日期字符串变成日期值 datenum(2008,8,21) an

    12、s= 733641 3. 计时函数 函数cputime计算自当前Matlab程序启动之后到运行结 束所占用的CPU时间(单位是秒)。 t0=cputime;fpatch;cputime-t0 ans= 0.0156 程序fpatch.m的运行时间是0.0156秒。 函数etime计算两个时间向量的间隔。 t1=clock;fpatch;etime(clock,t1) ans = 0.0150 程序fpatch.m的运行时间是0.0150秒。之所以比前面语句 的计算时间少,是由于该程序已从硬盘装入等原因 计算运行时间的函数还有 tic 函数与 toc 函数,前者启 动一个秒表,表示计时开始;后者

    13、则停止这个秒表,并 且计算运行时间。 tic;plot(rand(50,5);toc Elapsed time is 0.147644 seconds. 4. pause函数 函数 pause()函数是延迟等待函数,例如,程序中如果 出现pause(5),那么在执行到这句话的时候,停留5秒, 然后继续。 例 使用pause函数制作动画。 for i=-2*pi:0.5:2*pi R=cos(i) sin(i) 0;-sin(i) cos(i) 0;0 0 1; vert=1 1 1;1 2 1;2 2 1;2 1 1;1 1 2;1 2 2;2 2 2;2 1 2; vert=vert*R;

    14、fac=1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8; pause(0.1) patch(faces,fac,vertices,vert,FaceVertexCData,hsv(8),FaceColor,interp); view(3) end 程序是先绘制一个长方体,然后隔0.1秒又绘制出另外一 个长方体,新长方体的顶点坐标经过了变换,此变换是 乘以矩阵R完成的,该矩阵是绕Z轴旋转矩阵。如此下去, 绘制出下一页所示的图形,从而完成了此动画。 如果没有pause(0.1),那么就直接绘制出上图,没有 了动画效果。 如果把 R=cos(i) si

    15、n(i) 0;-sin(i) cos(i) 0;0 0 1; 变换成 R=cos(i) 0 sin(i);0 1 0;-sin(i) 0 cos(i); 那么就是绕Y轴旋 转。 (二)相机与视点 相机与视点的概念与动画制作密切相关。 1. 函数 函数camdolly() () surf(peaks) for i=0:0.05:0.5 camdolly(i,0,0) pause(0.2) end camdolly(0,i,0) camdolly(0,i,0,fixtarget) 只移动相机,物体不移动 用来移动相机位置和目标位置 表示左右移动 i 个单位, i 为正则向左,为负则向 右。camd

    16、olly函数的第3 个参数表示沿视轴移动。 上下移动 i 个单位 2. 函数 函数camorbit()与camroll() ()与 () () 函数camorbit(d1,d2) 根据d1与d2的大小(单位是度)绕 相机目标点旋转相机,d1表示水平旋转角度,d2表示垂 直旋转角度。 surf(peaks) axis off for i=1:36 camorbit(10,0,data,0 1 0) pause(0.2) end 函数camroll操纵相机绕视轴旋转 a) camroll(d)按照d指定的大小绕相机视轴旋转相机, 视轴由经过相机位置和相机目标点的直线确定。 b) camroll(h

    17、,d)操作由第一个句柄参数h确定的坐标系。 3. 函数 函数campan() () 函数campan(dt,dp) 按照 dt 和 dp 的大小绕相机旋转目标 点,dt 是水平旋转角度,dp 是垂直旋转角度。 surf(peaks) axis vis3d for i=1:720 campan(2,0) pause(0.01) end 该程序绕相机位置水平旋转 了72021440度,即4圈, 转完后又回到原先位置,一 共停留时间7200.017.2 秒。 函数campan还可以添加一个或两个参数 campan(dt,dp,s1,s2) 参数s1用来确定旋转中心, 参数s2用来确定旋转轴。 该函数

    18、还可以在第一个参数位置上加入坐标系句柄,决 定操作哪一个坐标系,默认是操作当前坐标系。 4. 函数 函数campos() () 该函数设置或查询相机的位置,其调用格式如下: campos campos(x,y,z) 返回相机在当前坐标系中的位置 将相机位置设置为当前坐标系中(x,y,z)处 该程序使相机沿x轴方向 运动。 axis vis3d off是取 消了三维视觉功能,取 消三维视觉功能后不论 是campos(x,0,0) ,还是 campos(0,y,0) ,或是 campos(x,y,z)效果都是 垂直屏幕表面运动,可 以更清晰的观察运动的 情况。 surf(peaks) axis v

    19、is3d off for x=-200:10:200 campos(x,0,0) drawnow end 为了验证campos函数不带参数时的功能,设计如下程序: a1= campos surf(peaks) a2= campos axis vis3d off a3= campos for x=-200:10:200 campos(x,0,0) drawnow end a4= campos 该程序中设置了4个campos, 返回了相机的4个位置,分别 是: a1 = 0.5000 0.5000 9.1603 a2 = -203.2855 -327.0090 86.6025 a3 = -194.

    20、1541 -317.7286 83.9027 a4 = 200 0 0 其中a1的值是相机默认位置,a4是程序运行完成后的相 机位置。 5. 函数 函数camtarget() () 该函数设置或查询相机目标点的位置,调用格式为: camtarget camtarget (x,y,z) 返回相机目标点在当前坐标系中的位置 将相机目标点位置设置为当前坐标系中 (x,y,z)处 surf(peaks) for i=1:100 camtarget(i,0,0) pause(0.01) end 改为camtarget(0,i,0) 改为camtarget(0,0,i) 该程序使相机目标点 (物体)沿x轴

    21、移动。 沿y轴移动 沿z轴移动 6. 函数 函数camva()与camzoom() ()与 () () 函数camva()的调用格式是: camva camva(a) 返回当前坐标系设置的相机视角 将当前坐标系的相机视角设置为a,单位是度 下面程序制作了两个按钮用来控制视角的改变。 uicontrol(Style,pushbutton,String,In, Position,20 20 60 20,Callback,if camva=179;return;else;camva(camva+1);end); 设置相机新的视角 函数camzoom()的调用格式是: camzoom(f) 返回相机视

    22、角 根据 f 的值对场景进行缩放。 7. 函数 函数view() () 视角函数 该函数指定视点方向,其调用格式为: view(az,el) 和 view(az,el) view(2) view(3) 设置三维图的视角。方位角 az 为从 y 轴 的负轴开始绕 z 轴水平旋转的角度。正 值表示视点逆时针旋转。el 为仰角。az 与 el 的单位为度。 设置为默认二维视图,az=0,el90 设置为默认三维视图,az=-37.5,el30 例 使用函数view()从不同角度观察图形。 X,Y=meshgrid(-10:0.5:10); Z=X.2/36-Y.2/25+sin(X+Y)*2; x=

    23、X(1,:); y=Y(:,1); i=find(y0.1 & y-3.6 & x3.5); Z(i,j)=nan; subplot(2,2,1);surf(X,Y,Z); xlabel(x), ylabel(y), zlabel(z); subplot(2,2,2);surf(X,Y,Z); xlabel(x), ylabel(y), zlabel(z);view(-30,60); subplot(2,2,3);surf(X,Y,Z); xlabel(x), ylabel(y), zlabel(z); view(2); subplot(2,2,4);surf(X,Y,Z); xlabel(x

    24、), ylabel(y), zlabel(z); view(30, -60); 上述程序运行后结果如下图所示,4个图形分别是不同视 角下显示的同一个曲面。 (三)程序动画与电影动画 1. 程序动画 从计算机图形学上看,动画就是绘制的图形发生变 化。这个变化不能太快,也不能太慢,要被人的视觉接 受。在程序执行时,能够使图形变化达到视觉要求。 例 程序动画制作。 下面程序就完成了一个动画。 X,Y=meshgrid(-10:1:10); Z=X.2/36-Y.2/25; h=mesh(Z) for i=1:10:360 rotate(h,20,3,56,i) pause(0.1) end 程序中r

    25、otate函数是Matlab提供的一个图形变换函数。 函数rotate(h,20,3,56,i)中, h是图形句柄,表示Mesh(Z)绘 制的图形;20,3,56决定了旋转轴方向;i表示旋转角度, 单位是度。 程序运行后,观看到的效果是一个面片在飞舞。为了 更好的观察面片的变化情况,改动上面程序为: for i=1:6 subplot(2,3,i) X,Y=meshgrid(-10:1:10); Z=X.2/36-Y.2/25; h=mesh(Z) rotate(h,20,3,56,i*55) axis tight off pause(0.1) end 绘制出的动画效果比较好,为了仔细观察,下

    26、图截取 了动画的一些中间图形。 这些图形是旋转时一些变化瞬间的图形。面片是一样 的,只不过是旋转过程中看到的各个不同侧面而已。 程序动画很多时候借助pause函数来完成。 2. 绘制图形制作电影动画 Matlab提供了动画制作函数movie,使用movie函数生 成动画就称为电影动画。生成动画必须有很多帧图形连 续播放,如果这些图形是绘制而成的,就叫这种动画为 绘制图形的电影动画。 例 播放一个不断变化的眼球程序段。 M=moviein(16); for j=1:16 plot(fft(eye(j+16); axis equal M(:,j)=getframe; pause(0.1) end

    27、movie(M,5) 程序中使用了moviein函数创建 一个结构体数组,专门用来装 载动画的各帧;使用getframe 函数(命令)把绘制出的图形 装入结构体。其中,绘制每一 帧图形之前,先使用了FFT变 换函数。程序最后一句是播放 函数,以每秒5幅的速度播放 画面。 getframe函数 函数 getframe函数可将当前图形窗口作为一个画面取下 并保存,格式为:m=getframe。它将每一帧画面信息数 据截取下来整理成列向量。该函数截取图形的点阵信息, 图形窗口的大小,对数据向量的大小影响较大,窗口越 大,所需存储容量越大。而图形的复杂性对数据容量要 求没有直接的关系。 moviein

    28、函数 函数 函数m=moviein(n)用来建立一个足够大的 n 列的矩 阵 m,用来保存 n 幅画面的数据,以备播放。 movie函数 函数 movie(m,k)以每秒 k 幅图形的速度播放由矩阵 m 的 列向量所组成的画面。 改动前面的程序如下,能够制作出新的动画。 M=moviein(16); for j=1:16 sphere(j); axis equal M(:,j)=getframe; end movie(M,10) 右边程序 可以观察 到一个椭 圆转化成 矩形的过 程。 左边程序演示一个球体从多 面体演化来的过程。 M=moviein(16); for j=16:-1:1 rec

    29、tangle(Position,4,5,15,10,Curvature,j/16); M(:,j)=getframe; axis equal end movie(M,2) 3. 基于图像制作电影动画 动画效果是由于一幅幅图形变化产生的,如果这些 图形来自于图像,那么就称该动画为基于图像的动画。 下列3个图象是用画图工具绘制出来的,分别命名为 1.jpg、2.jpg与3.jpg,存储在D盘根目录下。 (a) 1.jpg (b) 2.jpg (c) 3.jpg 制作动画的三幅图像 下面程序使用getframe函数装载上述几幅图像,使用 movie函数播放这几幅图像就是一个动画。 for i=1:3 k=int2str(i); k1=strcat(d:,k,.jpg); a1=imread(k1); image(a1); m(:,i)=getframe end movie(m,10) 4. 几个例题 例 下述程序播放一个直径不断变化的球体。 n=30 x,y,z=sphere m=moviein(n); for j=1:n surf(j*x,j*y,j*z) m(:,j)=getframe; end movie(m,30); 例 三维图形


    注意事项

    本文(MATLAB总结.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开