上海交通大学matlab课件.ppt

上传人:本田雅阁 文档编号:2632294 上传时间:2019-04-25 格式:PPT 页数:46 大小:1.36MB
返回 下载 相关 举报
上海交通大学matlab课件.ppt_第1页
第1页 / 共46页
上海交通大学matlab课件.ppt_第2页
第2页 / 共46页
上海交通大学matlab课件.ppt_第3页
第3页 / 共46页
上海交通大学matlab课件.ppt_第4页
第4页 / 共46页
上海交通大学matlab课件.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《上海交通大学matlab课件.ppt》由会员分享,可在线阅读,更多相关《上海交通大学matlab课件.ppt(46页珍藏版)》请在三一文库上搜索。

1、课 程:计算软件应用,上 机 (第10-14周周三下午12:30-14:30,物理实验楼306室) email: 物理楼1102室,内 容:学习计算软件 Matlab 和 Maple 版本:Matlab7.1(R2009b/7.9),Maple10(Maple13),参考文献: 1、精通Matlab6.5版,张志涌 北京航空航天大学出版社 2、MATLAB+编程(第二版),Stephen J. Chapman著,科学出版社 (刑树军/郑碧波译成中文) 3、MATLAB从入门到精通(7.x版),周建兴 等编,人民邮电出版社 4、http:/ (matlab中文论坛) 5、符号计算系统Maple

2、教程,张韵华、王新茂,中国科学技术大学出版社,http:/ (矩阵实验室的简称) = MATrix (矩阵) + LABoratory (实验室),主要特点: * 有高性能数值计算的高级算法,特别适合矩阵代数领域; * 有大量事先定义的数学函数,并且有很强的用户自定义函数的能力; * 有强大的绘图功能以及具有教育、科学和艺术学的图解和可视化的二维、三维图; * 适合个人应用的强有力的面向矩阵(向量)的高级程序设计语言; * 与其他语言编写的程序结合和输入输出格式化数据的能力; * 有在多个应用领域解决难题的工具箱。,MATLAB具有用法简单、灵活、结构性强、延展性好等优点,逐渐成为科技计算、视

3、图交互系统和程序中的首选语言工具。,符号数学工具箱 SIMULINK仿真工具箱 控制系统工具箱 信号处理工具箱 图像处理工具箱 通讯工具箱 系统辨识工具箱 小波分析工具箱 神经元网络工具箱 金融工具箱,Maple起源于1988年,是加拿大滑铁卢大学(University of Waterloo)和Waterloo Maple Software公司注册的一套为微积分、线性代数和微分方程等高等数学使用的软件包。是当今世界上最优秀的几个数学软件之一,其符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。 Maple提供了2000余种数学函数,涉及普通数学、高等数学、线性代数、数论、离

4、散数学、图形学。 Maple适用于解决微积分、解析几何、线性代数、微分方程、计算方法、概率统计等数学分支中的常见计算问题。,Maple 是专门进行数学运算的软件工具, 具有超强的符号运算能力, 提供了几乎包括所有数学领域 的专用函数(2k),Matlab 主要内容,最小二乘拟合,1、基础准备 2、基本数据类型 3、基本运算功能 4、数据与函数的可视化 5、符号计算 6、M文件和程序设计初步 7、数值计算,一、基础准备,帮助命令: 1、 help exp 得到指数函数命令的详细信息,2、lookfor +完整或不完整的关键词,进行搜索,Start now !,逗号或分号的区别: 逗号隔开,屏幕有

5、回显 分号隔开,无回显,Matlab 常用的交互界面,MATLAB 语言的变量命名规则 (1) 变量名必须以字母打头,之后可以是任意字母、 数字或下划线,变量名中不允许使用标点符号; (2) 变量名中的英文字母大小写是有区别的; (3) 变量名的最大长度是有规定的; 不同版本的系统规定不同:19个字符、31或63个字符等 可调用namelengthmax函数得到系统规定长度,MATLAB中变量使用之前,不需要指定变量的数据类型,也不必事先声明变量。,1、利用指令who,whos查阅内存变量 who指令获取当前所有内存变量的名称列表。 whos指令获取详细的内存变量列表,包含变量类型、大小等信息

6、。 2、利用指令save、load实现数据文件(*.mat)的存取。 save/load filename %保存/打开文件filename.mat save/load filename v1 v2 %保存/打开变量v1 v2,利用菜单:打开工作空间浏览器( WorkSpace ),可以看到所有内存变量的详细说明,和whos指令效果相同。并且可以通过右键点击变量引出现场菜单,对该变量进行编辑、删除、重命名、保存、绘图等操作。,内存变量的操作命令,(a) 数值 (Numerical) (b) 字符串 (Character) (c) 逻辑 (Logical) (d) 元胞 (Cell) (e) 构

7、架 (Structure) (f) JAVA类 (JAVA) (g) 函数句柄 (Function handle),二、基本数据类型,特点: 1) 基本组成部分是结构(Structure),以下标区分各个结构。 2) 结构必须划分成“域”后才能使用。 3) 结构不能直接存放数据,数据必须存放在结构下面的“域”中。 4) 结构的域可以存放任意类型、任意大小的数组(数值数组、字符串数组、符号对象、元胞等)。 5) 不同结构的同名域中可以存放不同类型的内容。 6) 结构数组可以是任意维的,可以利用下标寻址。,构 架 数 组,*直接对域赋值法产生“单构架”,即1*1构架数组,Green_house.n

8、ame=一号房 %构架的域由(构架名).(域名)标识 Green_house.volume=2000立方米 Green_house.temperature=31.2,30.4,31.6,28.7,29.7,31.1 Green_house.humidity=62.1,59.5,57.7,61.5,62.0,61.9,Green_house.humidity %显示humidity域中内容 ans = 62.1000 59.5000 57.7000 61.5000 62.0000 61.9000,Example1: 求x+y=4, 2x+3y=11的解,Green_house.parameter

9、.temperature=,数值类型,分类方法一: 双精度型 (系统默认类型) 单精度型 带符号整数 无符号整数 分类方法二: 标量 数组 矩阵 分类方法三: 实数 复数 z1=1+2i z2=3+4 * j,real(x) %取出复数的虚部 imag(x) %取出复数的实部 conj(x) %复数共轭,1、通过直接输入矩阵的元素构造矩阵: 用中括号 把所有矩阵元素括起来 同一行的不同数据元素之间用空格或逗号间隔 用分号(;)指定一行结束 可分成几行进行输入,用回车符代替分号 数据元素可以是表达式,系统将自动计算结果,矩 阵 的 构 造,特殊矩阵,2、利用冒号的作用,生成等间隔的向量,默认间隔

10、为1。例如:A=1:3;B=1:0.5:3,A=linspace(first value,last value,number),矩阵下标与子矩阵提取,A(m, n) % 提取第m行,第n列元素 A(:, n) % 提取第n列元素 A(m, :) % 提取第m行元素 A(m1:m2, n1:n2) % 提取第m1行到第m2行和第n1列到 第n2列的所有元素 A(m:end, n) % 提取从第m行到最末行和第n列的子块 A(:) %得到一个长列矢量,按矩阵的列进行排列,例: 修改矩阵A中元素的数值,reshape(A,m,n) %m*n=number,Example2,MATLAB的基本运算可分

11、为三类 算术运算 关系运算 逻辑运算,三、基本运算功能,基本算术运算符,矩阵的算术运算,1、矩阵乘法:*(乘) 2、矩阵除法:/ (右除)、 (左除) 3、矩阵的乘方:(乘方) 4、矩阵转置: (转置运算符),向量的运算,1、点积:dot 函数 2、叉积:cross 函数,不按照线性代数的规则,按照线性代数的规则,Example3,关 系 运 算,关系运算符的运算法则: 关系运算将对两个矩阵的对应元素进行比较。,逻辑运算符用于将关系表达式或逻辑量连接起来,构成较复杂的逻辑表达式。逻辑表达式的值也是逻辑量。,必须是两个同维矩阵或其中一个矩阵为标量才能进行 MATLAB提供了一些逻辑函数,逻 辑

12、运 算,三、数据与函数的可视化,MATLAB设有大量函数和命令来绘制出各种各样的图形,具有强大的绘图功能,二维图形绘制基本语句,线条属性的修改:类型、颜色、标记,x和y分别用于存储x坐标和y坐标数据,(1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,(x1,y1),(x2,y2),分别组成一组向量对,每一组向量对的长度可以不同。在同一坐标内绘制出n条曲线。,plot(x1,y1,x2,y2,xn,yn),例

13、、对给定数据绘制图形, x=1 2 3 5 7 7.5 8 10; y=2 6.5 7 7 5.5 4 6 8; plot(x,y),程序如下:,Example4,图形颜色、标记和线型参数表,例、对给定数据绘制图形,程序如下:,plot(x,y, *) 用“*”号标记的点,中间无连线,plot(x,y, g:d) 菱形标记的黑色点线, x=1 2 3 5 7 7.5 8 10; y=2 6.5 7 7 5.5 4 6 8; plot(x,y),图形窗口的分割 subplot(m,n,p),将当前图形窗口分成mn个绘图区,即每行n个,共m行,区号按行优先编号,且选择第p个绘图区作为当前活动区。在

14、每一个绘图区允许以不同的坐标系单独绘制图形。,subplot(2,1,1) subplot(2,1,2),subplot(2,2,1) subplot(2,2,2) subplot(2,2,3) subplot(2,2,4),y axis label,x axis label,Text,Tick-mark label,二维绘图的图例标注说明,Data symbol,Legend,Tick-mark,图形保持 hold on/off,title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y, 图形说明) gtext 将标注加到图形任意位置 legend(图例1

15、, 图例2,),图形标注,注:可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容,axis(xmin xmax ymin ymax zmin zmax) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。,坐标控制,网格线 grid on/off,边框线 box on/off,例、在同一坐标内,分别用不同线型和颜色绘制曲线 y1=0.2e-0.5xcos(4px),y2=2e-0.5xcos(px)

16、,标记交叉点。,程序如下: x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)1e-2); %查找y1与y2相等点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,k:,x1,y3,bp); %y1缺省蓝色实线, % y2黑色点线,y3蓝色五角星,Example5,程序: title(x f

17、rom 0 to 2pi); %加图形标题 xlabel(Variable x); %加x轴说明 ylabel(Variable y); %加y轴说明 text(3.8,-0.2, uparrow); %在指定位置添加向上箭头 text(3.6,-0.3, y1=0.2e-0.5xcos(4px) ); %在指定位置添加图形说明 text(2.2,0.7, leftarrow y2=2e-0.5xcos(px); legend(y1 , y2 ) %加图例,box on; %加坐标边框 grid on; %加网格线 axis equal %坐标轴采用等刻度,在上例中添加图形说明、坐标轴、图形说

18、明、图例、坐标边框。,调用格式为:plotyy(x1,y1,x2,y2) - x1,y1对应一条曲线,x2,y2对应另一条曲线; - 横坐标的标度相同; - 纵坐标有两个,用于x1,y1数据对, 右纵坐标用于x2,y2数据对。,具有两个纵坐标标度的图形,例、用不同标度在同一坐标内绘制曲线 y1=0.2e-0.5xcos(4px) 和y2=2e-0.5xcos(px) 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2);,Example6,fp

19、lot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现,lims为x,y的取值范围,tol为相对允许误差,其系统默认值为2e-3。选项定义与plot函数相同。,对函数自适应采样的绘图函数,例、 用fplot函数绘制f(x)=cos(tan(px)的曲线。 命令如下: fplot(cos(tan(pi*x), 0,1,1e-4),Example7,x=linspace(0,1,1000); y=cos(tan(pi*x); ploty(x,y);,其他二维图形绘制语句,plot函数用法十分相似,三维曲线图 plot3(x1,y1,z1,选项,xn,yn,zn,选项

20、n),例、绘制三维曲线。 t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title(Line in 3-D Space); xlabel(X);ylabel(Y); zlabel(Z); grid on;,Example8,三维曲面图,* 数据的准备,(i) 确定自变量取值范围和取值间隔x=x1:dx:x2;y=y1:dy:y2,(ii) “格点”的生成,(iii) 计算“格点”上的函数值,Z=f(X,Y),X,Y=meshgrid(x,y);,mesh(X,Y,Z,C) %画网格曲面,将数据点

21、在空间中描出 并连成网格; C指定用色 surf(X,Y,Z,C) %画完整曲面,将数据点所表示曲面画出,* 绘制三维曲面: surf函数和mesh函数,例、 绘制三维曲面图z=sin(x+sin(y)-x/10,x,y=meshgrid(0:0.25:4*pi); z=sin(x+sin(y)-x/10; mesh(x,y,z); axis(0 4*pi 0 4*pi -2.5 1);,Example9,透视、镂空、裁切、色图、灯光、照明、材质、透明度,* 图形效果:,三维柱面: x,y,z= cylinder(R,n),* 标准三维曲面,球面: x,y,z=sphere(n),MATLAB

22、还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。,* 其他三维图形绘制,bar3函数绘制三维条形图 stem3函数绘制离散序列数据的三维杆图 pie3函数绘制三维饼图 fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,X0,Y0,Z0=sphere(30) % 产生单位球面的三维坐标 surf(X0,Y0,Z0) % 画单位球面 X=2*X0;Y=2*Y0;Z=Z0*2; % 产生半径为2的球面的三维坐标 shading interp %采用插补明暗处理 hold on mesh(X,Y,Z) colormap(hot) %采用hot色图,copper,s

23、pring hold off hidden off %产生透视效果 axis equal %等坐标轴 axis off %不显示坐标轴,light(position,-3,-1,3,style,local),* 视点控制和图形的转动,视点控制 view,rotate(h,direction,alpha,origin); % h对象,direction=q,j/x,y,z,alpha右手法则旋转,origin方向轴支点,图形的交互编辑-图形窗,view(az,el); %方位角az,俯视角el, 单位度,缺省设置(-37.5,30) view(vx,vy,vz); %视点的直角坐标,图形转动ro

24、tate (绕方向轴旋转一个角度),动态图形,(i) 彗星状轨迹图:动态地展示质点的运动轨迹,comet(x,y,p) %二维图 comet3(x,y,z,p) %三维图 p为决定彗星长度的参量,缺省值0.1,(ii) 色图的变换,spinmap %使色图周期旋转约3秒钟 spinmap(t) %使色图周期旋转约t秒钟 spinmap(inf) %无限制旋转,ctrl+c结束 spinmap(t,inc) %inc缺省值2,控制快慢,(iii) 动画制作,MATLAB提供getframe、moviein和movie函数进行动画制作。,getframe函数可截取一幅画面信息(称为动画中的一帧),

25、一幅画面信息形成一个很大的列向量。显然,保存n幅图面就需一个大矩阵。,moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行速度。,movie(m,n)函数播放由矩阵m所定义的画面n次,缺省时播放一次。,程序如下 X,Y,Z=peaks(30); surf(X,Y,Z) axis(-3,3,-3,3,-10,10) axis off; shading interp; colormap(hot); m=moviein(20); % 建立一个20列大矩阵 for i=1:20 view(-37.5+24*(i-1

26、),30) % 改变视点 m(:,i)=getframe; % 将图形保存到m矩阵 end movie(m,2); % 播放画面2次,例、绘制peaks函数曲面并且将它绕z轴旋转,Example10,实验数据分析与处理,Matlab提供了polyfit 函数进行最小二乘的曲线拟合,p=polyfit(x,y,n) %对x和y进行n维多项式的最小二乘拟合,输出结果为含有n+1个元素的行向量,该向量以维数递减的形式给出拟合多项式的系数。,regress 函数进行多元线性回归,求和(sum)与求积(prod),求平均值(mean)和标准方差(std)、中值(median)与相关系数(corrcoef

27、),例:用二次多项式拟合下列数据,X= 0.1 0.2 0.15 0.0 -0.2 0.3 y= 0.95 0.84 0.86 1.06 1.50 0.72,程序如下 x=0.1 0.2 0.15 0.0 -0.2 0.3 y=0.95 0.84 0.86 1.06 1.50 0.72 p=polyfit(x,y,2) xi=-0.2:0.01:0.3; yi=polyval(p,xi); %利用拟合出的系数向量和x自变量进行应变量y的回归 plot(x,y,o,xi,yi,k); title(polyfit),Example11,coef=y*x/(x*x); scatter(x,y, *)

28、; xi=0.5:0.01:3 yi=coef*xi; hold on plot(xi,yi,r),例:直线的最小二乘拟合,x = 0.5 1 1.5 2 2.5 3 y = 1.75 2.45 3.81 4.8 8 8.6,p=polyfit(x,y,1),Example12,力学题1:设目标相对于射点的高度为yf,给定初速,试计算物体在真空中飞行的时间和距离,建模:,求落点时间 tf 时,,解出t,它就是落地时间tf。,tf有两个解,我们得到一个有效解(大值),再求,程序ex1.m,clear; y0 = 0; x0 = 0; % 初始位置 vMag = input(输入初始速度 (m/s

29、):(书上为50) ); % 输入初始速度 vDir = input( 输入初速方向(度):(书上为40或50) ); yf = input(输入目标高度(米):(书上为8) ); % 输入目标高度 vx0 = vMag*cos(vDir* (pi/180); % 计算x,y方向的初始速度 vy0 = vMag*sin(vDir* (pi/180); % wy = -9.81; wx = 0; % 重力加速度 (m/s2) tf=roots(wy/2,vy0,y0-yf); % 解方程wy*t2/2+vy0*t+y0=yh,计算落点tf tf=max(tf); % 去除落点时间tf中的庸解 t

30、=0:0.1:tf,tf; % 设定时间数组,因tf不大可能被0.1整除,必须加一个tf点 y = y0 + vy0*t + wy*t.2/2; % 计算轨迹 x = x0 + vx0*t + wx*t.2/2; xf = max(x),plot(x,y),grid % 计算射程,画出轨迹 set(gcf,color,w) % 置图形背景色为白色,力学题2:四连杆机构如图所示,输入杆L1的转角q1=w1t, w1=100,求输出杆L3转角q3随时间的变换规律,并求其角速度和角加速度。,建模:四连杆的运动方程由X和Y方向的长度关系确定,从上述两个方程中消去q2,给定q1,就可以q3,程序ex2.m,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1