matlab实用技巧精讲之二

上传人:第*** 文档编号:58321982 上传时间:2018-10-28 格式:PPT 页数:53 大小:1.11MB
返回 下载 相关 举报
matlab实用技巧精讲之二_第1页
第1页 / 共53页
matlab实用技巧精讲之二_第2页
第2页 / 共53页
matlab实用技巧精讲之二_第3页
第3页 / 共53页
matlab实用技巧精讲之二_第4页
第4页 / 共53页
matlab实用技巧精讲之二_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《matlab实用技巧精讲之二》由会员分享,可在线阅读,更多相关《matlab实用技巧精讲之二(53页珍藏版)》请在金锄头文库上搜索。

1、Page 1,第二章 MATLAB的数值计算功能多项式的运算。 MATLAB矢量化。 MATLAB的符号计算功能。,Page 2,MATLAB的数值计算功能:多项式运算,多项式的表示方法,例如:输入多项式 p(x)=x3-5x2+6x-33 p=1 -5 6 -33; poly2sym(p) ans= x3-5*x2+6*x-33,Page 3,MATLAB的数值计算功能:多项式运算,求多项式的根 用函数roots求解多项式的根例:求解方程 p(x)=2x4-5x3+6x2-x+9 的所有根 p=2 -5 6 -1 9; roots(p) ans=1.6024 + 1.2709i1.6024

2、- 1.2709i-0.3524 + 0.9755i-0.3524 - 0.9755i,Page 4,MATLAB的数值计算功能:多项式运算,多项式的四则运算 (1)加法和减法对于多项式的加法和减法,MATLAB 不提供专用的函数。 (2)乘法和除法 乘法由函数conv来实现,其使用格式为c=conv(a,b)除法由deconv实现,其使用格式为d=deconv(a,b),Page 5,MATLAB的数值计算功能:多项式运算,多项式的乘除运算 乘法由函数conv来实现 除法由deconv实现 例:计算两多项式的乘除法 pd= 6 -195 432 -453 9 -792 -162; poly2

3、sym(pd) ans= 6*x6-195*x5+432*x4-453*x3+9*x2-792*x-162 d=3 -90 -18; poly2sym(d) ans=3*x2-90*x-18 p1=deconv(pd,d)p1 = 2 -5 6 -1 9,Page 6,MATLAB的数值计算功能:多项式运算,对多项式求导数 采用函数polyder对多项式求导数,polyder(p) 例: p= 6 -195 432 -453 9 -792 -162; poly2sym(p) ans= 6*x6-195*x5+432*x4-453*x3+9*x2-792*x-162Dp=polyder(p) D

4、p =36 -975 1728 -1359 18 -792 poly2sym(Dp) ans=36*x5-975*x4+1728*x3-1359*x2+18*x-792,Page 7,MATLAB的数值计算功能:多项式运算,多项式拟合 多项式拟合用拟合函数polyfit实现,调用格式 polyfit(X, Y, n) X和Y为拟合数据,n为拟合多项式的阶数例:用5阶多项式对0, /2上的正弦函数进行拟合,并图示拟合情况。 x=0:pi/20:pi/2; y=sin(x); a=polyfit(x,y,5); x1=0:pi/30:pi*2; y1=sin(x1); y2=a(1)*x1.5+a

5、(2)*x1.4+a(3)*x1.3+a(4)*x1.2+a(5)*x1+a(6); plot(x1,y1,b-,x1,y2,r*); legend(原曲线,拟合曲线) axis(0,7,-1.2,4),Page 8,MATLAB的数值计算功能:保存与再用,把Matlab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件save 将工作空间中所有的变量存到matlab.mat文件中save data 将工作空间中所有的变量存到data.mat文件中save data a b 将工作空间中a和b变量存到data.mat文件中load data 将data.mat记录的变量调入工作空间

6、,Page 9,MATLAB的数值计算功能: Matlab矢量化,何为矢量化 问题尽量使用矩阵表述 避免出现太多(两重或以上)的循环嵌套 矢量化技术的目的在于改善程序的性能例1:有一200400矩阵data,for i = 1:200,for j = 1:400 ,if data(i,j) 0 data(i,j) = 0; end end end,cputime=0.0470,data(data 0) = 0;,cputime=0.0160,Page 10,MATLAB的数值计算功能: Matlab矢量化,例2:上万个点的计算采用矢量化技术可以大幅度提高运算速度,%一般循环编程 i=0; fo

7、r t=0:.01:10000,i=i+1;y(i)=sin(t); end,%矢量化编程 t=0:.01:10000; y=sin(t);,cputime20秒,cputime=0.2340秒,Page 11,MATLAB的数值计算功能: Matlab矢量化,使用向量作索引 如果 X 和 V 都为向量 X(V) 就是 X(V(1), X(V(2), ., X(V(n) 例: X=2 5 8 11 14 17 20 23 26 29 V=4 2 6 X(V) 就是X(4) X(2) X(6),即 11 5 17,Page 12,MATLAB的数值计算功能: Matlab矢量化,创建和操作矩阵

8、从向量构建矩阵 例1:A = ones(5,5)*10; A = 10; A = A(ones(5,5) ;例2:M = repmat(1:5, 1,3);,M = 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5,怎样用repmat生成55全10矩阵?,A = 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10,Page 13,MATLAB的数值计算功能: Matlab矢量化,排序、设置和计数 max 最大元素 min 最小元素 sort 递增排序 unique 递增排序并且去掉相同元

9、素例1:找出向量中最大元,返回其下标 a=5 2 7 89 12 7 525 78; Y,I=max(a) Y = 525 I = 7,Page 14,MATLAB的数值计算功能: Matlab矢量化,排序、设置和计数 例2:向量元素排序 a=5 2 7 89 12 7 525 78; sort(a) ans =2 5 7 7 12 78 89 525 unique(a) ans =2 5 7 12 78 89 525,Page 15,MATLAB的符号计算功能,1993年之前的符号计算语言:Maple、Mathematic和MathCAD等 1993年Mathworks公司为了解决MATLA

10、B用户对符号计算的需求,从加拿大滑铁卢大学购买了Maple的使用权,并在此基础上开发了符号计算工具箱(Symbolic Toolbox) 至此Matlab 不仅具有数值运算功能,具有符号计算功能,Page 16,MATLAB的符号计算功能,本部分包含内容 符号表达式、符号矩阵的创建 符号线性代数 因式分解、展开和简化 符号代数方程求解 符号微积分 符号微分方程,Page 17,MATLAB的符号计算功能,符号运算与数值运算的区别 数值运算中必须先对变量赋值,然后才能参与运算。 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。符号运算的特点: 运算对象可以是没赋值的符号变量 可以获

11、得任意精度的解尽管MATLAB 7的符号运算功能很强大,但是一门优秀的语言应该能够博采众家之长。因此MATLAB7语言提供了和MAPLE语言的良好接口,通过maple.m和map.m两个专用的M文件来实现。,Page 18,MATLAB符号变量和符号表达式的生成和使用,定义基本符号对象的指令有两个:sym, syms。它们的常用使用格式如下:f =sym(arg) %把数字、字符串或表达式arg转换为符号对象f。syms(argv1, argv2, argvk) %把字符arg1, arg2, argk定义为基本符号对象。syms argv1 argv2 argvk %上述格式的简洁形式。,P

12、age 19,MATLAB符号变量和符号表达式的生成和使用,【例】符号常数形成中的差异。 a1=1/3,pi/7,sqrt(5),pi+sqrt(5) a1 =0.3333 0.4488 2.2361 5.3777 a2=sym(1/3,pi/7,sqrt(5),pi+sqrt(5) a2 = 1/3, pi/7, sqrt(5), pi+sqrt(5) a3=sym(1/3,pi/7,sqrt(5),pi+sqrt(5) a3 = 1/3, pi/7, sqrt(5), 6054707603575008*2(-50) a23=a2-a3 a23 = 0, 0, 0, pi+5(1/2)-18

13、9209612611719/35184372088832,Page 20,MATLAB符号变量和符号表达式的生成和使用,【例】使用sym函数定义符号表达式, a=sym(a);b=sym(b);c=sym(c); x=sym(x); f=a*x2+b*x+c f = a*x2+b*x+c,也可以采取整体定义法 f=sym(a*x2+b*x+c) f =a*x2+b*x+c,Page 21,MATLAB符号变量的生成和使用,【例题】用符号计算验证三角等式, syms fai1 fai2 y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2) y = si

14、n(fai1-fai2), clear y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2) ? Undefined function or variable fai1.,Page 22,符号表达式(符号函数)的操作,符号表达式的四则运算 syms x y a b fun1=sin(x)+cos(y); fun2=a+b; fun1+fun2 ans = sin(x)+cos(y)+a+b fun1*fun2 ans = (sin(x)+cos(y)*(a+b) fun1/fun2 ans = (sin(x)+cos(y)/(a+b),Page 23

15、,MATLAB符号矩阵的创建,用Matlab函数sym创建矩阵 命令格式:A=sym( ) 需用sym函数 需用 标识 注意:数值矩阵A=1,2;3,4有效,A=a,b;c,d 则不识别! 例:B = sym(a , 2*b ; 3*a , 0)B = a, 2*b3*a, 0 这就完成了一个符号矩阵的创建。,符号矩阵的每一行的两端都有方括号,这是与 Matlab数值矩阵的一个重要区别。,Page 24,MATLAB符号矩阵的创建,用生成子矩阵的方法生成符号矩阵命令格式:A= ; ,【例题】用生成子矩阵的方法生成符号矩阵 h1=55,ttt;44,1 ? Error using = vertcat All rows in the bracketed expression must have the same number of columns. h2=55,ttt;44,1 h2 = 55,ttt 44,1 ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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