资源描述
*,*,单击此处编辑母版标题样式,第二章 MATLAB编程与作图,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,MATLAB,数学实验,第二章,MATLAB,编程与作图,第二章,MATLAB,编程与作图,2.1,程序设计,2.2,作图,2.3,在线帮助和文件管理,10/1/2024,2,第二章 MATLAB编程与作图,2.1,程序设计,循环语句,for,循环变量,=,初值,:,增量,:,终值,语句;,end,while,(,条件式),语句;,end,分支语句,if,(,条件式),语句,;end,if,(,条件式,1),语句,1;,elseif,(,条件式,2),语句,2;else,语句,;end,switch(,分支变量,)case(,值,1),语句,1;case(,值,2),语句,2;otherwise,语句,;end,其它:,pause,break,return,error,10/1/2024,3,第二章 MATLAB编程与作图,2.1,程序设计,方法一:,for,语句,s=0;for n=1:100,s=s+1/n/n;end,;,s,方法二:,while,语句,clear;s=0;n=1;while n1,EPS=EPS/2;,n=n+1;,end,EPS=,EPS,*2;,n,format,short,e,EPS,10/1/2024,6,第二章 MATLAB编程与作图,例,2.3,:,M,脚本文件,clear,theta=-pi:0.01:pi;,rho(1,:)=2*sin(5*theta).2;,rho(2,:)=cos(10*theta).3;,rho(3,:)=sin(4*theta).2;,rho(4,:)=5*cos(5*theta).3;,for k=1:4,subplot(2,2,k),polar(theta,rho(k,:),end,10/1/2024,7,第二章 MATLAB编程与作图,2.1,程序设计,M,函数文件,function,输出变量,=,函数名,(,输入变量,),语句,;,例,2.4,M,函数必须给予输入参数值,M,函数在,edit,窗口编写,在,command,窗口调用,M,函数是以该函数的,磁盘文件主名调用,,而不是文件中的函数名称,M,函数中变量为局部变量,10/1/2024,8,第二章 MATLAB编程与作图,例,2.4,%,一个简单的,M,函数文件,保存文件名,myfun.m,function s,i=,myfun(n,),%s=1+.+n,,,i=1*2*3*.*n,s=0;i=1;,for k=1:n,s=,s+k,;,i=i*k;,end,10/1/2024,9,第二章 MATLAB编程与作图,例,2.5,%,函数递归,function y=myfun2(n),%,计算阶乘,if n=1,y=1;,else,y=myfun2(n-1)*n;,end,10/1/2024,10,第二章 MATLAB编程与作图,%egg1,隔,1,天的蛋个数,%egg2,隔,2,天的蛋个数,%chicken1,过,n,天后母鸡个数,if n=1,egg1=1;,egg2=0;,chicken1=1;,elseif,n=2,egg1=1;,egg2=1;,chicken1=1;,elseif,n=3,egg1=1;,egg2=1;,chicken1=2;,else,e1,e2,chi=myegg(n-1);,egg1=chi;,egg2=e1;,chicken1=e2+chi;,end,例,2.6,:已知笼子有只母鸡,母鸡一天生一个鸡蛋,一个鸡蛋过,2,天后变成母鸡,问,n,天后笼子有多少只鸡和蛋?,function egg1,egg2,chicken1=,myegg(n,),10/1/2024,11,第二章 MATLAB编程与作图,2.1,程序设计,注释:,%,开头,对本行后面字符起作用,不参与运算。,对话:,input,,,disp,全程变量与局部变量,nargin,、,nargout,和,varargin,子函数和嵌套函数,提高速度,10/1/2024,12,第二章 MATLAB编程与作图,例,2.7%input break continue,clear,while 1,n=input(,请输入一个能被,2,整除的正整数,n=);,if(n0)&(mod(n,2)=0),break,else,disp,(,输入有误,继续,.);,continue,end,end,disp,(,呵呵,输入正确,100,分,);,10/1/2024,13,第二章 MATLAB编程与作图,例,2.8%,子函数,function,max,min,=,mypfun(x,),%,主函数,n=,length(x,);,max=mysubfun1(x,n);,min=mysubfun2(x);,function r=mysubfun1(x,n),%,子函数,1,x1=,sort(x,);,%,排序,默认从小到大排,r=x1(n);,function r=mysubfun2(x),%,子函数,2,x1=,sort(x,);,r=x1(1);,10/1/2024,14,第二章 MATLAB编程与作图,例,2.9,子函数,function y=subfun(b),%,主函数,global a x,y=subfun1(a,x)+b;,function y1=subfun1(a,x),%,子函数,y1=a*x;,%,运行部分,global a x%workspace,中也要声明全局变量,a=5;x=2,x=,2,y=subfun(6),y=,16,10/1/2024,15,第二章 MATLAB编程与作图,2.1,程序设计,普通编程,function s=,f(m,),s=0;,for n=1:m,s=s+1/n/n;,end,向量化编程,function s=,f(m,),n=1:m;,s=sum(1./n.2);,尽量少用,for,语句,10/1/2024,16,第二章 MATLAB编程与作图,2.1,程序设计,例,2.10,编一,M,函数,对任意输入的向量,x,可计算分段函数值构成的向量。,分量方式,(方法一),,慢,向量方式,(方法二、三),快,数组预分配,y=,zeros(size(x,),10/1/2024,17,第二章 MATLAB编程与作图,例,2.10,(方法一:利用,for,语句),function y=,myfun(x,),n=,length(x,);,for i=1:n,if,x(i,)1,y(i,)=x(i)2;,elseif,x(i,)1);,k2=,find(x,-1,k3=,find(x,1).*x.2+(x-1,10/1/2024,19,第二章 MATLAB编程与作图,2.1,程序设计,函数句柄,(handle),fname,=myfun4;,利用,feval,或者直接调用,特点:,在更大的范围内调用函数,提高函数调用的速度,使函数调用象使用变量一样方便、简单,Inline,函数,fun=,inline(expr,arg1,arg2,.),匿名函数,fun=(arg1,arg2,.),可直接使用工作空间中的变量,匿名函数与,inline,函数的区别,10/1/2024,20,第二章 MATLAB编程与作图,例 函数句柄的使用,A=fix(randn(1,8)*6),A=,1 -8 4 9 -4 5 7 -9,fun=myfun5,%,例,28,中的函数,fun=,myfun5,y=fun(A),%,直接调用,y=,1 -13 16 81 -5 25 49 -15,y=feval(fun,A),%,利用,feval,y=,1 -13 16 81 -5 25 49 -15,10/1/2024,21,第二章 MATLAB编程与作图,例 内联函数的使用,f=inline(x.2+2*x+1,x),f=,Inline function:,f(x,)=x.2+2*x+1,f(5),ans,=,36,y=feval(f,5),y=,36,A=1 2;3 4,A=,1 2,3 4,f(A,),ans,=,4 9,16 25,10/1/2024,22,第二章 MATLAB编程与作图,ff=inline(x.2+x.*y+y.2+1,x,y),ff=,Inline function:,ff(x,y,)=x.2+x.*y+y.2+1,ff(2,3),ans,=,20,z=feval(ff,2,3),z=,20,A=1 2;3 4;B=ones(2);,ff(A,B),ans=,4 8,14 22,10/1/2024,23,第二章 MATLAB编程与作图,myfun,=inline(v(1)2+v(2)+3,v),myfun,=,Inline function:,myfun(v,)=v(1)2+v(2)+3,myfun(2,3),ans,=,10,10/1/2024,24,第二章 MATLAB编程与作图,f=(x,n)x.2;n*x,f=,(x,n)x.2;n*x,f(1:4,5),ans,=,1 4 9 16,5 10 15 20,10/1/2024,25,第二章 MATLAB编程与作图,k=5;,ff=(x)x2+2*,x+k,%,可以使用空间中的变量,k,ff=,(x)x2+2*,x+k,ff(5),ans,=,40,A=1 2;3 4,A=,1 2,3 4,ff(A,),ans,=,14 19,26 35,10/1/2024,26,第二章 MATLAB编程与作图,a=2;b=3;,f=(,x)a,*,x+b,;,f(5),%,可直接调用工作空间中的变量,ans,=,13,a=4;b=5;,f(5),ans,=,13,f=(,x)a,*,x+b,;,%,a,b,取值改变时需重新创建一次,f(5),ans,=,25,10/1/2024,27,第二章 MATLAB编程与作图,2.2,作图,曲线图,plot(x,y),以数据,(x(i),y(i),为节点的折线图,其中,x,y,为同长度的向量,plot(x1,y1,x2,y2,.),多组数据折线图,fplot(fun,a,b,),函数,fun,在区间,a,b,上的函数图,fun,可以是字符串表达式,匿名函数,内联函数,,M,函数文件等等,plot3(x,y,z),空间曲线图,其中,x,y,z,为同长度的向量,polar(theta,rho,),用极角,theta,和极径,rho,画出极坐标图形,图形导出到,word,线型与标记,P31,表,eg2_5,(,p32,),曲线图,y,=,x,2,+4,x,-1,和,y,=|,x,|,0.2,sin(5,x,),10/1/2024,28,第二章 MATLAB编程与作图,x=0:0.1:2*pi;,y=sin(x);,plot(x,y),plot(x,y,ro),%,默认是蓝色曲线,x=0 1 2 5;y=4-2 1 2;,plot(x,y),fplot(x2+4*x+1,-15 15)%,函数用字符串表示,10/1/2024,29,第二章 MATLAB编程与作图,fplot(abs(x).0.2*sin(5*x),x.2+2*x-1,-10,10),%,字符串,数组,fplot(sin(1/x),-2,2,-1.2,1.2,r)%,观察震荡间断点,fplot(myfplot,0,2*pi,-1.2,1.2,r)%,函数用,M,函数表示,type myfplot,function Y=myfplot(x),Y(:,1)=sin(x);,Y(:,2)=cos(x);,Y(:,3)=0*x;,10/1/2024,30,第二章 MATLAB编程与作图,分别用,plot,及,fplot,绘以下函数的图形:,%,用,plot,x=-10:0.1:10;,y=atan(x).*(x=0)+abs(x).*(x=-
展开阅读全文