特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt

上传人:本田雅阁 文档编号:3213200 上传时间:2019-08-01 格式:PPT 页数:43 大小:166.01KB
返回 下载 相关 举报
特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt_第1页
第1页 / 共43页
特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt_第2页
第2页 / 共43页
特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt_第3页
第3页 / 共43页
特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt_第4页
第4页 / 共43页
特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt》由会员分享,可在线阅读,更多相关《特点编程效率高计算功能强特别是矩阵计算使用简便易于扩.ppt(43页珍藏版)》请在三一文库上搜索。

1、1,特点: 编程效率高 计算功能强 特别是矩阵计算 使用简便 易于扩充 可建立M文件定义过程和函数以供调用,可与其它语言(C, Fortran等)混合编程。,预备实验 MATLAB使用练习 MATLAB MATrix LABoratory 矩阵实验室,Matlab特点,2,1.1.1 矩阵的直接输入 A=1,2,3;4,5,6 或 A=1 2 3;4 5 6 或 A=1 2 3 4 5 6 显示矩阵元素: A(2,1) ans=4, A(2,1)=7 A=1 2 3 7 5 6 A(3,4)=1 A= 1 2 3 0 7 5 6 0 0 0 0 1,1 矩阵、数组与函数 1.1 矩阵的输入与运

2、算,矩阵直接输入,3, w=zeros(2,3) u=ones(2,3) v=eye(3,4) 前三列为单位矩阵,后一列为零 x=rand(1,3) 13 (0,1)均匀分布随机矩阵, randn(m,n) : m n标准正态分布矩阵, hilb(n): n阶Hilbert矩阵,magic(n): n阶幻方矩阵,注:n阶Hilbert矩阵为:,1.1.2 函数生成矩阵,4, A(3,:) 显示A的第3行 A(:,2) 显示A的第2列 A(2:5,:) 显示A的第2到5行 A(:,1:2:5) 显示A的第1、3、5列 A(2:4,1:3) 显示A的第2到4行、1到3列的元素 C=(A,B) A、

3、B并列构成新矩阵C D=(A;B) A、B上下构成新矩阵D,1.1.3 矩阵的裁剪与拼接,5,A+B, A-B, A, A*B, A3, B/A (即BA+), AB (即A+B), A+3(矩阵加常数,即每个元素加此常数),1.1.4 矩阵运算,6,1.2 数组及其运算,数组运算MATLAB中一种特定的计算,可视为两个同型矩阵间对应项的运算,运算符号为矩阵运算符号前加“.”。由于矩阵的加、减本身就是对应项间的运算,故不必再加“.”。 例如, x=t2, y=sin(t), 0=t=pi, z=xy=t2*sin(t)。 在MATLAB中,往往要用函数的一组值来表示此函数(如作图时)。 t=0

4、:0.1*pi:pi; x=t.2; y=sin(t); z=x.*y (or z=t.2.*sin(t); 则t, x, y, z都是维数相同的向量,且有 x(k)=t(k)2, y(k)=sin(t(k), z(k)=x(k)*y(k)=t(k)2*sin(t(k).,7,1.3.1 语句形式 一般为 变量=表达式:a=1 2 3 4; b=a+1; c=a.*b; d=a*b; e=a*b; 1.3.2 变量 变量名由字母、数字和下划线组成,区分大小写字母,最多31个字符,第一个字符必须是字母. 不必说明类型和维数,自动分配内存空间. 几个特殊量:pi 圆周率, eps 可分辨最小正数,

5、 inf 正无穷大, NaN 不定值,i、j 复数虚单位. 以上几个量有其特殊值,但若赋予其它值后,则不再有其特殊性. 但用clear可恢复其固有的特殊值. 例如:pi = 5; clear pi;(这时pi的值又为3.1416),1.3 语句、变量和表达式,8, s1=Hello; s2=every; s3=body; s=s1,s2, ,s3 , 则 s= Hello,every body ss=s(1:5), 则 ss=Hello,1.3.3 字符串,9,1.4.1 标量函数 三角函数: sin, cos, tan, cot, sec, csc, asin, acos, atan, ac

6、ot, asec, acsc, sinh, cosh, tanh, asinh, acosh, atanh 其它基本函数: sqrt, exp, log, log10, abs, round(四舍五入取整), floor(向左方向取整), ceil(向右方向取整), fix(向0方向取整), sign, real(取实部), imag, angle, rats(有理逼近),1.4 函数,10,例如: rats(pi) ans=355/113, rats(sqrt(2) ans=1393/985 x=(0:0.2:1)*pi; y=sin(x) y = 0 0.5878 0.9511 0.951

7、1 0.5878 0 round(y) 0 1 1 1 1 0; floor(y) 0 0 0 0 0 0; 另一个计算函数值的命令: feval(F,x), 其中 F:字符串,x:变量. 如上面的x:z=feval(sin,x), 同z=sin(x).,函数例,11,max, min, sum, length, mean, median(中间值,奇数项取中间项,偶数项取中间两项的平均), prod(乘积), sort(从小到大重新排列) 注:以上函数作用于矩阵时,是作用于每一列,结果为行向量.,1.4.2 向量函数,12,构造函数: zeros, ones, eye, rand, randn

8、, diag(生成或提取对角阵,向量生成对角阵,矩阵提取其对角线为列向量), triu(生成上三角阵), trul(生成下三角阵) 计算函数: size, det, rank, inv, eig, trace, expm(矩阵指数), poly(特征多项式), norm, cond, lu(LU分解), qr(正交分解), svd(奇异值分解),1.4.3 矩阵函数,13,help 程序名(m文件) 显示m文件中的说明,%后面的注释. 若要显示全部文件,可用 type 代替 help. lookfor 搜索包含某个关键词的帮助主题,例如: lookfor complex,2 命令和窗口环境 2

9、.1 在线帮助系统,14,可用菜单File/Preferences中的Command Window 里的Numarical Format来设定数据显示方式,有short(小数点后4位), long(15位数字), bank(小数点后2位), short e(5位科学计数法), long e(15位科学计数法), rat(最接近的有理数). 也可在Command Window中用命令设置,例如: format long,2.2 数据显示格式,15,各种编辑键,如方向键,删除键等,基本同其它软件,可见课本. 比较特殊的是:上箭头键可调入前一行命令. 2.4 MATLAB工作区 Command Wi

10、ndow who, whos, disp(x) 显示x的内容,与x 的区别是:前者仅显示x的内容,后者多个“x=“. save abc, 把Command Window中的数据贮存在文件abc.mat中 load 文件名,可调入用save保存的数据,如load abc. 也可调入文本文件,例如,可在MATLAB之外建立一个数据文件magik.dat,然后用load magik.dat即读入此文件并建立变量magik,其值即为文件中内容.,2.3 命令行编辑,16, diary 建立一个diary文件,如diary abc.dia. 文件名和扩展名可任取,并开始记录此后MATLAB的所有操作,用

11、diary off停止记录,并可用type abc.dia显示记录内容. path 显示当前搜索路径 管理文件的命令: what, 显示当前目录下的m, mat, mex文件 dir, 或 ls, 显示当前目录下的所有文件 cd path 改变当前目录为path cd, chdir, pwd, 都可显示当前的工作目录 type abc, 显示文件abc.m的内容 delete abc.m, 删除m文件abc.m(必须有扩展名) which abc, 显示abc.m所在的目录,若要显示其它类型文件的目录,必须加扩展名. quit, 退出MATLAB.,命令行编辑(续),17,例 y=0 0.58

12、 0.7 0.95 0.83 0.25; plot(y) 实际上是画折线,x=1 2 3 4 5 6 例 x=linspace(0,2*pi,30); y=sin(x); plot(x,y) 注意1. 为29等分,30维向量,2.与 plot(y) 的区别. 3.1.2 多重线 例 x=0:pi/15:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2); 例 x=0:pi/15:2*pi; y=sin(x);cos(x); plot(x,y); 例 x=0:pi/15:2*pi; y=sin(x); plot(x,y), hold on, z=cos(x);

13、 plot(x,z), hold off,3 图形功能 3.1 2维图形 3.1.1 基本形式,18,以上三个例子所画图形都如下图:,(例),19,例 x=0:pi/15:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,b:,x,y2,g-) 分别为蓝色点线和绿色实线 线型 线方式:- 实线,:点线,-. 虚点线,- - 波折线 点方式:. 圆点,+ 加号,* 星号,x x形,o 小圈 颜色:y yellow, r red, g green, b blue, w write, k black, c cyan(青色) 在不指定时,默认实线方式,颜色自动确定.,3.1.

14、3 线型和颜色,20,grid 加网格,或grid on(加网格), grid off (去网格) xlabel(.); ylable(); title(); 加标题 text(2.5,0.7,sinx) 在图中(2.5,0.7)处加字符串 sinx, 或 gtext(sinx), 用鼠标光标定位置 3.1.5 坐标系的控制 axis(xmin,xmax,ymin,ymax) x,y的范围 axis equal or axis(equal) x,y轴的单位长度相同 axis square or axis(square) 图框呈方形 axis off or axis(off) 清除坐标刻度,3.

15、1.4 网格和标记,21,例 x=linspace(0,2*pi,30); y=sin(x); z=cos(x); %linspace(*,*,n) 生成均匀分布的n维向量 u=2*sin(x).*cos(x) or u=2*y.*z; v=sin(x)./cos(x) or v=y./z or v=tan(x); subplot(2,2,1),plot(x,y),axis(0 2*pi 1 1),title(sin(x); subplot(2,2,2),plot(x,z),axis(0 2*pi 1 1),title(cos(x); subplot(2,2,3),plot(x,u),axis

16、(0 2*pi 1 1), title(2sin(x)cos(x); subplot(2,2,4),plot(x,v),axis(0 2*pi 20 20), title(sin(x)/cos(x); 所画四幅图象如下:,3.1.6 多幅图形,22,(多幅图的例),23,fplot(fun,xmin,xmax,ymin,ymax) 函数作图,fun为函数名. 例如: myfun=inline(x.2-4*x+3); fplot(myfun,0.5,5,-2,6) (m文件函数名须加引号 ,例如:fplot(sin,0,2*pi,-1,1) ),半对数坐标:semilogx(x,y), semi

17、logy(x,y) 全对数坐标:loglog(x,y),用常用对数刻度,即本来刻度为0,1,2,处现为1,10,100, pause 暂停执行,直到按任意键.,3.1.7 其它,24,例 z = f(x,y) = 程序:x = -7.5:0.5:7.5; y = x; X,Y=meshgrid(x,y); %X为矩阵,其所有行都为x,行数同y的长;Y为矩阵,其所有列都为y,列数同x的长) R=sqrt(X.2+Y.2)+eps; %R为与X、Y同型的矩阵,加eps是为了避免除以0 Z=sin(R)./R; mesh(X,Y,Z) %以(X(i,j),Y(i,j),Z(i,j)为节点画网格 %图

18、见课本p19图11,mesh 可换为 surf,3.2 3维图形 3.2.1 带网格的曲面,25,例 x=sint, y=cost, z=t, 0 t 10*pi. 程序: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) 3.2.3 等高线 contour 或 contour3 , 例如,例3.2.1的例中,加 contour(X,Y,Z,10) 即得10条等高线,3.2.4 其它 view(azi,ele), azi 为方位角(以y负方向为0),ele为仰角,默认值分别为:-37.5, 30.,3.2.2 空间曲线,26,关系运算符:, =, = =, = 例

19、 A=1:5; B=5:-1:1; C = A = 4 结果为:C = 0 0 0 1 1 D = A = = B 结果为:D = 0 0 1 0 0 例 x=(-3:3)/3; sin(x)./x %Warning: Divide by zero ans = 0.8415, *, *, NaN, *, *, * 改为:x=(-3:3)/3; x=x+(x= =0)*eps; sin(x)./x % (x= =0) 为 (0 0 0 1 0 0 0) x=0.8515, *, *, 1.0000, *, *, * %OK!,4 程序设计 4.1 关系和逻辑运算,27,逻辑运算符:&, |, 关

20、系和逻辑函数:all, any all(x), 当向量x的所有元素非零时返回1,否则返回0. any(x), 当向量x有非零元素时返回1,否则返回0. all(A), any(A), A为矩阵,则对A的列向量作用,返回的是行向量.,关系和逻辑运算(续),28,if end, if else end, if elseif elseif else end 例 y为x的函数,用下面条件语句描述: if x=0 y=0; elseif x=1 y=x; else y=1; end,4.2 条件和循环语句 4.2.1 if语句,29,例 for i=1:3 for j=1:4 a(i,j)=1/(i+j

21、-1); end end format rat %数据显示格式为有理数 a= 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6,4.2.2 for语句,30,while end %用法与条件语句类似 例 n=0; EPS=1; while (1+EPS)1 EPS=EPS/2; n=n+1; end EPS=2*EPS; n, format short E, EPS 显示:n=53, EPS=2.2204e-016 %即2-52. 用break可跳出循环,4.2.3 while语句,31,EPS=1 for n=1:100 EPS=EPS/2; if

22、(1+EPS) =1 EPS=2*EPS; break end end n, format short E, EPS %显示结果同上.,上例的另一设计:,32,switch case case otherwise end,例如: x=3; switch x case 0 y=0 case 3 y=3 otherwise y=5 end 运行结果:y = 3,4.2.4 switch语句,33,4.3.1 文本M文件 把一段程序存为M文件,在Command Window中或其他M文件中键入文件名即可执行此段程序. M文件中定义的变量为全局变量. 4.3.2 函数M文件 用M文件自定义函数,开头为

23、: function yname = fname(xname) yname: 因变量名,fname: 函数名,xname:自变量名. 文件名必须为fname,即于函数名相同.,4.3 M文件,34,例 建立一个自变量为m, n的函数,用其构造mn矩阵,其元素随机取均匀分布在09中的整数: function a=randint(m,n) a=floor(10*rand(m,n); 以上两句存为M文件randint.m. 用法: A=randint(2,3) %z则A为23矩阵,其元素为随机取自09中的整数. 函数M文件中的变量为局部变量,要想在Command Window 或其他M文件中可调用,

24、必须在这些地方把此变量说明为global: 例如,global a; 注意,M文件必须存放在MATLAB的搜索路径中才可被调用.,M文件例,35,p28 1), 3), 11), 13) 12) 可作例题: 如图,将 y=UL/U 表示为 x=R2/R 和 a=RL/R 的函数,并以a为参数(a=10, 1, 0.1),作函数 y(x, a) 的图形,对结果作出解释.,作业:,36,y与x, a的关系为:,例题讲解:,37,用MATLAB作图程序: x=0:0.05:1; a=10; y(1,:)=a*x./(x.*(1-x)+a); a=1; y(2,:)=a*x./(x.*(1-x)+a)

25、; a=0.1; y(3,:)=a*x./(x.*(1-x)+a); plot(x,y(1,:),b,x,y(2,:),r,x,y(3,:),g); 解释: ,当a较大时, .,38,程序1:画分形图 %fra1.m, 2004/4/14, a fractal image function y=fra1(n); p1=0;0; p2=1;0; theta=87*pi/180; costh=cos(theta);sinth=sin(theta); costh2=costh*costh-sinth*sinth; sinth2=2*costh*sinth; p=0.3-sqrt(0.21)*cot(

26、theta); h=sqrt(0.21)*csc(theta); y=p1,p2; for i=1:n m=size(y,2); for j=m:-1:2,应用实例:,39,u1=y(:,j-1); u2=y(:,j); du=u2-u1; if norm(du)0.05 v1=u1+du*p; v2=v1+costh,-sinth;sinth,costh*du*h; du=v2-v1; v3=v2+costh2,sinth2;-sinth2,costh2*du; last=size(y,2); y=y(:,1:j-1),v1,v2,v3,y(:,j:last); end end end pl

27、ot(y(1,:),y(2,:), axis equal, axis off,(程序1续),40,fra1(7);,程序1运行结果:,41,程序2:画分形图 %fra2.m, 2004/4/14, a fractal image function y=fra2(p1,p2); %generally, p1=0;0; p2=1;0; theta=87*pi/180; costh=cos(theta);sinth=sin(theta); costh2=costh*costh-sinth*sinth; sinth2=2*costh*sinth; p=0.3-sqrt(0.21)*cot(theta)

28、; h=sqrt(0.21)*csc(theta); dp=p2-p1; s =norm(dp); if s0.1 v1=p1+p*dp; v2=v1+costh,-sinth;sinth,costh*dp*h; dv=v2-v1;,程序2:,42,v3=v2+costh2,sinth2;-sinth2,costh2*dv; fra2(p1,v1); fra2(v1,v2); fra2(v2,v3); fra2(v3,p2); else plot(p1(1),p2(1),p1(2),p2(2), hold on end axis equal axis off 运行: Matlab中,p1=0;0; p2=1;0; fra2(p1,p2); (此程序运行比fra1慢,可能是递归时要反复计算三角函数,改进:用常数矩阵),程序2续,43,程序2运行结果:,p1=0; 0; p2=1; 0; fra2(p1, p2);,

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

当前位置:首页 > 其他


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