《MATLAB简单程序设计》由会员分享,可在线阅读,更多相关《MATLAB简单程序设计(22页珍藏版)》请在金锄头文库上搜索。
1、1/22MATLAB 程序设计方法程序设计方法表达式和运算符表达式和运算符命令文件命令文件( (程序文件程序文件) )程序设计中的流程控制程序设计中的流程控制练习与思考题练习与思考题2/22表达式表达式由变量、运算符、函数、数字组成由变量、运算符、函数、数字组成球坐标变换球坐标变换表达式和运算符表达式和运算符用赋值语句创建用赋值语句创建变量变量 变量名变量名=数据数据 变量名变量名=表达式表达式 x=R*cos(theta)*cos(fai);y=R*cos(theta)*sin(fai);z=R*sin(theta);纬度纬度经度经度3/22例例2.1格林威治天文台建于格林威治天文台建于16
2、75年年,其经度为零其经度为零,纬度为北纬纬度为北纬510。计计算格林威治天文台在地心直角坐算格林威治天文台在地心直角坐标系中的坐标并在球面上标记标系中的坐标并在球面上标记X,Y,Z=sphere(24);mesh(X,Y,Z),holdonfai=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);plot3(x,y,z,b,x0,y0,z0,ro,linewid
3、th,2)view(124,30)4/22+ 加加- 减减 * 乘乘 .* 点乘点乘/ 右除右除 ./ 点右除点右除 左除左除 . 点左除点左除 矩阵幂矩阵幂 . 点幂点幂1.算术运算符算术运算符2.关系运算符关系运算符小于小于大于大于=大于等于大于等于=等于等于=不等于不等于3.逻辑运算符逻辑运算符 & 与与 (and) | 或或 (or) 非非 (not)表达式和运算符表达式和运算符5/22运算优先级运算优先级函数运算函数运算算术运算算术运算关系运算关系运算逻辑运算逻辑运算exp()、log()、sin()、abs()、fix()、.、.*、./、*、/、+、;、;、=、=、=&、|表达式
4、表达式(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+ca6/22命令文件命令文件MATLAB命令的有序集合。命令的有序集合。 文件执行文件执行对文件中命令进行批处理,即从第一对文件中命令进行批处理,即从第一条命令开始按顺序执行,直到最后一条命令。如果条命令开始按顺序执行,直到最后一条命令。如果中间某条命令出错,则中断并输出错误信息中间某条命令出错,则中断并输出错
5、误信息M文件分为文件分为命令文件命令文件和函数文件两种和函数文件两种在编辑窗口中编写在编辑窗口中编写;保存并对文件命名;保存并对文件命名;命令窗口键入文件命令窗口键入文件名运行;名运行;观察运行结果;观察运行结果;7/22例例2.2成都地理位置成都地理位置: :北纬北纬30o, ,东经东经104o; ;北京地理位北京地理位置置: :北纬北纬40o, ,东经东经116o。计算两城市距离近似值。计算两城市距离近似值。 由两城市经纬度可计算出地心直角坐标系的坐标由两城市经纬度可计算出地心直角坐标系的坐标P1( (x1,y1,z1) ),P2( (x2,y2,z2) )向径之间的角度向径之间的角度 球
6、面短程线计算公式球面短程线计算公式 输入经纬度数据和地球半径;输入经纬度数据和地球半径;转换两城市的经纬度为地心直角坐标数据;转换两城市的经纬度为地心直角坐标数据;提取两个点的向径坐标;提取两个点的向径坐标;计算向径间的夹角和短程线长度并输出计算结果计算向径间的夹角和短程线长度并输出计算结果。8/22datas=30,104;40,116;% %经纬度数据经纬度数据R=6400;theta=datas(:,1)*pi/180;%弧度制弧度制fai=datas(:,2)*pi/180;x=R*cos(theta).*cos(fai);%直角坐标转换直角坐标转换y=R*cos(theta).*si
7、n(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=1563.429/22条件控制条件控制; 循环控制循环控制; 错误控制错误控制;终止运行控制终止运行控制条件控制条件控制有选择地运行程序块有选择地运行程序块1. if/ elseif 语句语句例
8、例2.8 判润年程序判润年程序程序设计中的流程控制year=input(inputyear:=);n1=year/4;n2=year/100;n3=year/400;ifn1=fix(n1)&n2=fix(n2)disp(是润年是润年)elseifn1=fix(n1)&n3=fix(n3)disp(是润年是润年)elsedisp(不是润年不是润年)end润年条件有二润年条件有二能被能被4整除,但整除,但不能被不能被100整除;整除;能被能被4整除,又整除,又能被能被400整除。整除。10/221.for循环循环语法语法: for变量变量=初值初值:步长:终值步长:终值 可执行语句可执行语句 e
9、nd程序设计中的循环控制例例2.3 裴波拉奇数列裴波拉奇数列n=input(inputn:=);f(1)=1;f(2)=1;fork=3:nf(k)=f(k-1)+f(k-2);endf(n)f(44)=70140873311/22例例2.3程序功能如下程序功能如下:把边长为把边长为2以原点为中心的正方以原点为中心的正方形旋转形旋转pi/24,将其压缩将其压缩( (r=0.89),),重复重复24次并绘图次并绘图xy=-1-1;1-1;11;-11;-1-1;A=cos(pi/24)-sin(pi/24);%创建正交矩阵创建正交矩阵sin(pi/24)cos(pi/24);x=xy(:,1);
10、y=xy(:,2);%提取坐标数据提取坐标数据line(x,y),pause(1)%画线并暂停一秒画线并暂停一秒fork=1:24xy=.89*xy*A;%旋转并压缩旋转并压缩x=xy(:,1);y=xy(:,2);line(x,y),pause(1)end12/22例例2.4空间四面体底面是一三角形空间四面体底面是一三角形,将三角形三个顶点将三角形三个顶点与四面体顶部的顶点相连接就形成三角形锥面与四面体顶部的顶点相连接就形成三角形锥面。利用利用MATLAB的帧动画方法演示一个四面体旋转过程。的帧动画方法演示一个四面体旋转过程。 M=moviein(16);X,Y,Z=cylinder(1,0
11、,3);%创建四面体坐标创建四面体坐标A=cos(pi/8)-sin(pi/8);sin(pi/8)cos(pi/8);fork=1:16mesh(X,Y,Z),axisoff%绘图绘图colormap(001),view(-30,40)M(:,k)=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循环循环 将循环体中语句循环执行直到条件不成立为止将循环体中语句循环执行直到条件不成立为止。 语法
12、语法: while 条件表达式条件表达式 可执行语句可执行语句 end条件表达式一般由变量、数字、逻辑运算、关系运条件表达式一般由变量、数字、逻辑运算、关系运算符和一般运算符组成,以判断循环的进行和停止算符和一般运算符组成,以判断循环的进行和停止;只要表达式的值只要表达式的值(逻辑值逻辑值)结果为正确结果为正确(非非0),循环循环继继续;直到表达式值为续;直到表达式值为0,循环停止。,循环停止。程序设计中的循环控制14/22例例2.53n +1问题问题.n=input(inputn=);%输入数据输入数据whilen=1r=rem(n,2);%求求n/2的余数的余数ifr=0n=n/2%第一种
13、操作第一种操作elsen=3*n+1%第二种操作第二种操作endend对任一自然数对任一自然数n,按如下法则进行运算按如下法则进行运算:若若n为偶数为偶数,则将则将n除除2;若若n为奇数为奇数,则将则将n乘乘3加加1。将运算结果按将运算结果按上面法则继续运算上面法则继续运算,重复若干次后结果最终是重复若干次后结果最终是1.n=516,8,4,2,1程序设计中的流程控制15/223.continue命令命令通常用于通常用于 for或或while循环语句中循环语句中,与与 if语句一起使语句一起使用用,跳过本次循环跳过本次循环,去执行下一轮循环去执行下一轮循环4. break命令命令通常用于通常用
14、于for或或while循环语句中循环语句中,与与if语句一起使用语句一起使用,中止本次循环中止本次循环,跳出最内层循环跳出最内层循环If 条件表达式,条件表达式,break, end5. error(message)显示文本显示文本 message,并中断程序执行并中断程序执行If 条件表达式条件表达式, error(message), end程序设计中的流程控制16/22如果一个正整数如果一个正整数 n 只能被只能被1和它自身整除,则称这个和它自身整除,则称这个数为素数数为素数(或质数或质数)。例如:。例如:2、3、5、7、11、例例2.6用试商法判别素数用试商法判别素数n=input(in
15、putn:=);fork=2:n-1ifmod(n,k)=0,break,end%中止循环中止循环endifkheroinputa:=3inputb:=4inputc:=8?Errorusing=hero输入错误输入错误, ,三角形两边之和大于第三边三角形两边之和大于第三边ifa+bc|a+cb|b+caerror(输入错误输入错误,三角形两边之和大于第三边三角形两边之和大于第三边)end18/22function返回返回变量列表变量列表函数名函数名(输入输入变量列表变量列表)%注解说明注解说明输入变量检测输入变量检测,输出变量检测输出变量检测函数体函数体函数文件的编写函数文件的编写funct
16、ionY=young(n)ifnargin=0,n=3;endY=eye(n);Y(:,1)=ones(n,1);fork=3:nY(k,2:k-1)=Y(k-1,1:k-2)+Y(k-1,2:k-1);end例例2.8杨辉三角形杨辉三角形19/22红红、绿两队从相距绿两队从相距100公里的地点同时出发相向行军公里的地点同时出发相向行军红队速度为红队速度为10(公里公里/小时小时)绿队速度为绿队速度为8(公里公里/小时小时)开始时开始时,通讯员骑摩托从红队出发为行进中的两队通讯员骑摩托从红队出发为行进中的两队传递消息。摩托车的速度为传递消息。摩托车的速度为60(公里公里/小时小时)往返于两队往
17、返于两队之间之间.每遇一队每遇一队,立即折回驶向另一队立即折回驶向另一队.当两队距离小当两队距离小于于0.2公里时公里时,摩托车停止。计算通讯员驾驶摩托车跑摩托车停止。计算通讯员驾驶摩托车跑了多少趟了多少趟(从一队驶向另一队为一趟从一队驶向另一队为一趟)。例例2.8摩托车问题摩托车问题20/22将红将红队、绿队和摩托车假设为队、绿队和摩托车假设为A、B、C三个点三个点. .A点初始位置点初始位置A=0,速度速度va=10(运动向右运动向右);B点初始位置点初始位置B=100,速度速度vb=8(运动向左运动向左);C点点初始位置初始位置C=0,速度速度vc=60(f=1表示表示运动运动方向方向)
18、 )当当C向右运动时向右运动时,C、B相遇时间相遇时间: tk= (BA)/(8+60)当当C向左运动时向左运动时,A、C相遇时间相遇时间: tk= (BA)/(60+10)利用相遇时间利用相遇时间tk、及时计算及时计算A,B的的最新最新位置位置当当 (BA)0.2iff=1tk=(B-A)/(vb+vc);elsetk=(B-A)/(vc+va);endA=A+va*tk;B=B-vb*tk;plot(A,0,R.,B,0,g.),pause(1)f=-f;k=k+1;endk,A,BwhoYourvariablesare:AftkvbBkvavcA=0;B=100;va=10;vb=8;vc=60;f=1;k=0;plot(A,0,ro,B,0,go),holdon22/22练习与思考题练习与思考题1.用一句话说明循环控制语句的特点。用一句话说明循环控制语句的特点。2.说明说明for循环循环while循环语句的相同和不同之处。循环语句的相同和不同之处。3.修改修改“试商法判断素数试商法判断素数”的程序,产生的程序,产生100以内的以内的全部素数。全部素数。