《MATLAB简单程序设计.ppt》由会员分享,可在线阅读,更多相关《MATLAB简单程序设计.ppt(22页珍藏版)》请在优知文库上搜索。
1、1/22MATLAB 程序设计方法程序设计方法 表达式和运算符表达式和运算符命令文件命令文件( (程序文件程序文件) )程序设计中的流程控制程序设计中的流程控制练习与思考题练习与思考题2/22表达式表达式由变量、运算符、函数、数字组成由变量、运算符、函数、数字组成球坐标变换球坐标变换表达式和运算符表达式和运算符用赋值语句创建用赋值语句创建变量变量 变量名变量名=数据数据 变量名变量名=表达式表达式 coscosRx sincosRy sinRz x=R*cos(theta)*cos(fai);y=R*cos(theta)*sin(fai);z=R*sin(theta); 纬度纬度经度经度3/2
2、2例例2.1 格林威治天文台建于格林威治天文台建于1675年年,其经度为零其经度为零,纬度为北纬纬度为北纬510。计算计算格林威治天文台在地心直角坐标格林威治天文台在地心直角坐标系中的坐标并在球面上标记系中的坐标并在球面上标记 X,Y,Z=sphere(24);mesh(X,Y,Z),hold onfai=0; theta=51*pi/180; x0=cos(theta)*cos(fai);y0=cos(theta)*sin(fai);z0=sin(theta); th=linspace(-pi/2,pi/2,100);x=cos(th);y=zeros(size(x);z=sin(th);p
3、lot3(x,y,z,b,x0,y0,z0,ro,linewidth,2)view(124,30)4/22+ 加加 - 减减 * 乘乘 .* 点乘点乘/ 右除右除 ./ 点右除点右除 左除左除 . 点左除点左除 矩阵幂矩阵幂 . 点幂点幂1 .算术运算符算术运算符2.关系运算符关系运算符 小于小于 大于大于 = 大于等于大于等于 = 等于等于 = 不等于不等于3.逻辑运算符逻辑运算符 & 与与 (and) | 或或 (or) 非非 (not)表达式和运算符表达式和运算符5/22运算优先级运算优先级函数运算函数运算算术运算算术运算关系运算关系运算逻辑运算逻辑运算exp()、log()、sin()
4、、abs()、fix()、.、.*、./、*、/、+、;、;、=、=、=&、|表达式表达式 (1+fix(pi)*mod(2,4)+2*32结果为结果为ans=26;三角形任意两边之和大于第三边的逻辑表达式三角形任意两边之和大于第三边的逻辑表达式 (A) a+b=c | a+c=b | b+c=a (B) a+b=c | a+c=b | b+cc | a+cb | b+ca (D) a+bc & a+cb & b+ca 6/22命令文件命令文件MATLAB命令的有序集合。命令的有序集合。 文件执行文件执行对文件中命令进行批处理,即从第一对文件中命令进行批处理,即从第一条命令开始按顺序执行,直到
5、最后一条命令。如果条命令开始按顺序执行,直到最后一条命令。如果中间某条命令出错,则中断并输出错误信息中间某条命令出错,则中断并输出错误信息M文件分为文件分为命令文件命令文件和函数文件两种和函数文件两种在编辑窗口中编写在编辑窗口中编写;保存并对文件命名;保存并对文件命名;命令窗口键入文件命令窗口键入文件名运行;名运行;观察运行结果;观察运行结果;7/22例例2.2 成都地理位置成都地理位置: :北纬北纬30o, ,东经东经104o; ;北京地理位北京地理位置置: :北纬北纬40o, ,东经东经116o。计算两城市距离近似值。计算两城市距离近似值。 由两城市经纬度可计算出地心直角坐标系的坐标由两城
6、市经纬度可计算出地心直角坐标系的坐标P1( (x1,y1,z1) ),P2( (x2,y2,z2) )向径之间的角度向径之间的角度 )arccos(2212121Rzzyyxx 球面短程线计算公式球面短程线计算公式 RL输入经纬度数据和地球半径;输入经纬度数据和地球半径;转换两城市的经纬度为地心直角坐标数据;转换两城市的经纬度为地心直角坐标数据;提取两个点的向径坐标;提取两个点的向径坐标;计算向径间的夹角和短程线长度并输出计算结果计算向径间的夹角和短程线长度并输出计算结果。8/22datas=30,104;40,116; % %经纬度数据经纬度数据R=6400;theta=datas(:,1)
7、*pi/180; %弧度制弧度制fai=datas(:,2)*pi/180;x=R*cos(theta).*cos(fai); %直角坐标转换直角坐标转换y=R*cos(theta).*sin(fai);z=R*sin(theta);Op1=x(1),y(1),z(1); %第一城市坐标第一城市坐标Op2=x(2),y(2),z(2); %第二城市坐标第二城市坐标d=R*acos(Op1*Op2/(R*R) % %计算并显示距离计算并显示距离 按顺序录入程序文件按顺序录入程序文件(文件名文件名:distance.m)在命令窗口运行程序在命令窗口运行程序distance,屏幕将显示屏幕将显示:d
8、 =1563.429/22条件控制条件控制; 循环控制循环控制; 错误控制错误控制;终止运行控制终止运行控制条件控制条件控制有选择地运行程序块有选择地运行程序块1. if / elseif 语句语句例例2 .8 判润年程序判润年程序程序设计中的流程控制year=input(input year:=);n1=year/4;n2=year/100;n3=year/400;if n1=fix(n1)&n2=fix(n2) disp(是润年是润年)elseif n1=fix(n1)&n3=fix(n3) disp(是润年是润年)else disp(不是润年不是润年)end润年条件有二润年条件有二能被能
9、被4整除,但整除,但不能被不能被100整除;整除;能被能被4整除,又整除,又能被能被400整除。整除。10/221. for 循环循环语法语法: for 变量变量 =初值初值:步长:终值步长:终值 可执行语句可执行语句 end程序设计中的循环控制例例2.3 裴波拉奇数列裴波拉奇数列 n=input(input n:=); f(1)=1;f(2)=1; for k=3:n f(k)=f(k-1)+f(k-2); end f(n)f(44)=70140873311/22例例2.3 程序功能如下程序功能如下:把边长为把边长为2以原点为中心的正方以原点为中心的正方形旋转形旋转pi/24,将其压缩将其压
10、缩( (r=0.89),),重复重复24次并绘图次并绘图 xy=-1 -1;1 -1;1 1;-1 1;-1 -1; A=cos(pi/24) -sin(pi/24); %创建正交矩阵创建正交矩阵 sin(pi/24) cos(pi/24); x=xy(:,1);y=xy(:,2); %提取坐标数据提取坐标数据line(x,y),pause(1) %画线并暂停一秒画线并暂停一秒for k=1:24 xy=.89*xy*A; %旋转并压缩旋转并压缩 x=xy(:,1);y=xy(:,2); line(x,y),pause(1)end-1-0.500.51-1-0.500.5112/22例例2.4
11、空间四面体底面是一三角形空间四面体底面是一三角形,将三角形三个顶将三角形三个顶点与四面体顶部的顶点相连接就形成三角形锥面点与四面体顶部的顶点相连接就形成三角形锥面。利利用用MATLAB的帧动画方法演示一个四面体旋转过程。的帧动画方法演示一个四面体旋转过程。 M = moviein(16);X,Y,Z=cylinder(1,0,3); %创建四面体坐标创建四面体坐标A=cos(pi/8) -sin(pi/8);sin(pi/8) cos(pi/8);for k=1:16 mesh(X,Y,Z),axis off %绘图绘图 colormap(0 0 1),view(-30,40) M(:,k)=
12、getframe; %帧设计帧设计 xy=A*X(1,:);Y(1,:); %旋转旋转 x=xy(1,:);X=1;0*x; %坐标提取扩充矩阵坐标提取扩充矩阵 y=xy(2,:);Y=1;0*y;endmovie(M,5) %帧播放帧播放 13/222. while循环循环 将循环体中语句循环执行直到条件不成立为止将循环体中语句循环执行直到条件不成立为止。 语法语法: while 条件表达式条件表达式 可执行语句可执行语句 end条件表达式一般由变量、数字、逻辑运算、关系运条件表达式一般由变量、数字、逻辑运算、关系运算符和一般运算符组成,以判断循环的进行和停止算符和一般运算符组成,以判断循环
13、的进行和停止;只要表达式的值只要表达式的值(逻辑值逻辑值)结果为正确结果为正确(非非0),循环继循环继续;直到表达式值为续;直到表达式值为0,循环停止。,循环停止。程序设计中的循环控制14/22 例例2.5 3n + 1 问题问题. n=input(input n=); %输入数据输入数据while n=1 r=rem(n,2); %求求n/2的余数的余数 if r = =0 n=n/2 %第一种操作第一种操作 else n=3*n+1 %第二种操作第二种操作 endend 对任一自然数对任一自然数n,按如下法则进行运算按如下法则进行运算:若若n为偶数为偶数,则将则将n除除2;若若n为奇数为奇
14、数,则将则将n乘乘3加加1。将运算结果按将运算结果按上面法则继续运算上面法则继续运算, 重复若干次后结果最终是重复若干次后结果最终是1. n=5 16, 8, 4, 2, 1程序设计中的流程控制15/223. continue 命令命令通常用于通常用于 for 或或 while 循环语句中循环语句中,与与 if 语句一起使语句一起使用用,跳过本次循环跳过本次循环,去执行下一轮循环去执行下一轮循环4. break命令命令通常用于通常用于for或或while循环语句中循环语句中,与与if语句一起使用语句一起使用,中中止本次循环止本次循环,跳出最内层循环跳出最内层循环If 条件表达式,条件表达式,b
15、reak, end5. error(message)显示文本显示文本 message,并中断程序执行,并中断程序执行If 条件表达式条件表达式, error(message), end程序设计中的流程控制16/22如果一个正整数如果一个正整数 n 只能被只能被1和它自身整除,则称这个和它自身整除,则称这个数为素数数为素数(或质数或质数)。例如:。例如:2、3、5、7、11、例例2.6用试商法判别素数用试商法判别素数n=input(input n:=); for k=2:n-1 if mod(n,k)=0,break,end %中止循环中止循环endif k heroinput a:=3inpu
16、t b:=4input c:=8? Error using = hero输入错误输入错误, ,三角形两边之和大于第三边三角形两边之和大于第三边if a+bc | a+cb | b+ca error(输入错误输入错误,三角形两边之和大于第三边三角形两边之和大于第三边)end18/22function 返回返回变量列表变量列表函数名函数名(输入输入变量列表变量列表)%注解说明注解说明 输入变量检测输入变量检测,输出变量检测输出变量检测 函数体函数体函数文件的编写函数文件的编写function Y=young(n)if nargin=0,n=3;endY=eye(n);Y(:,1)=ones(n,1); for k=3:n Y(k,2:k-1)=Y(k-1,1:k-2)+Y(k-1,2:k-1); end例例2.8 杨辉三角形杨辉三角形 19/22红红、绿两队从相距绿两队从相距100公里的地点同时出发相向行军公里的地点同时出发相向行军红队速度为红队速度为10(公里公里/小时小时)绿队速度为绿队速度为8(公里公里/小时小时)开始时开始时,通讯员骑摩托从红队出发为行进中的两队通讯员骑摩托从红队出