matlab函数及脚本文件入门-文档资料_第1页
matlab函数及脚本文件入门-文档资料_第2页
matlab函数及脚本文件入门-文档资料_第3页
matlab函数及脚本文件入门-文档资料_第4页
matlab函数及脚本文件入门-文档资料_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、13.1 M文件建立文件建立3.2 脚本文件脚本文件3.3 函数文件函数文件3.4 程序控制结构程序控制结构3.5 程序调试程序调试21. M 文件文件Matlab 命令组合构成,完成操作和算法M文件分类 扩展名为:3.1 M文件建立文件建立3 (1) 新建M 文件2.2.M M文件建立和打开文件建立和打开 u 命令操作:u 命令按钮: M 文件编辑器(2)打开M 文件u 菜单操作: 表格或空白文件 函数文件 4(2). windows记事本和记事本和word5 3 . matlab搜索路径的设置搜索路径的设置显示路径:显示路径:设定当前目录:设定当前目录: 设定搜索路径:设定搜索路径: se

2、t path (add folder)删除删除rmpath( folder path)64. 显示显示M文件内容文件内容调用格式:调用格式: edit which aaaaaaaa not found. cd C:UsersDesktopmatlab addpath(C:UsersDesktopmatlab) edit aaaatype aaaa type aaaa.mqq=22;bb=444;dd=qq+bb;在命令窗口显示7% fcircle calculate the area and perimeter of a circle of radii r% r 圆半径 % s 圆面积% p

3、圆周长% 2004年年7月月30日编日编r=22; s=pi*r*r p=2*pi*r 1. 编脚本文件求半径为编脚本文件求半径为r的圆的面积和周长的圆的面积和周长H1注释行注释行函数体函数体帮助文本区帮助文本区 保存保存rsp3.2 脚本文件脚本文件 由于help搜索例例例例8p 运行后所有变量驻留在基本工作空间(运行后所有变量驻留在基本工作空间(base workspace)p 文件变量名不要和计算机命令、函数、文件名相同。文件变量名不要和计算机命令、函数、文件名相同。 whos Name Size Bytes Class Attributes p 1x1 8 double r 1x1 8

4、 double s 1x1 8 double rsp2. 调用脚本文件调用脚本文件rps*349特点特点 一串命令行简单叠加的集合;自动按顺序执行文件的命令;无输入和输出量;所有变量都驻留在基本工作空间中;所有变量均为。v,d=eig(a)10从键盘输入数据给变量AA=input(Please input A: )name=input(Whats your name? , s)Please input A: 33输入字符串变量:输入字符串变量:输入数值:输入数值:name =lili11clear; r=input(Please input radii :);s=pi*r*r; p=2*pi*

5、r; dddPlease input radii :33s = 3.4212e+003p = 207.3451保存保存ddd例例例例12: a=input(input example)input example1+4a = 5 ischar(a)ans = 0 b=input(input examplen,ss)input example1+4b =1+4 ischar(b)ans = 1n是换行 13数据输出:x=1:2:5; xx =1 3 5 disp(x)x = 1 3 5例例例例14disp(the x value is)disp(x) disp(the x value is:, )

6、the x value is:1 3 5the x value is 1 3 515function s,p=fci(r)s=pi*r*r ;p=2*pi*r; endr=input(r=);s=pi*r*r;p=2*pi*r;sp=s,pdisp(s=,num2str(sp(1),p=,num2str(sp(2)例例例例 编脚本文件求半径为编脚本文件求半径为r的圆的面积和周长的圆的面积和周长16 输入x,y值,并将它们值互换后输出。 例例例例x=input(Input x please.);y=input(Input y please.);z=x;x=y;y=z;disp(x);disp(y

7、);17指定数据输出的格式%d 整数%e 实数:科学计算法形式%f 实数:小数形式%g 由系统自动选取上述两种格式之一%s 输出字符串:文件句柄,若缺省,则输出到屏幕A是用来存放数据的矩阵指定格式将变量的值输出到屏幕或指定文件18创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。 a=string; fid=fopen(d:char1.txt,w); fprintf(fid,%s,a); fclose(fid); fid1=fopen(d:char1.txt,rt); b=fscanf(fid1,%s)例例例例 b=3fprintf (there are %f ,b ) there are

8、3.000000193.3.1 函数文件函数文件 3.3.2 全局变量和全局变量和局部变量局部变量3.3.3 子函数与主函数子函数与主函数3.3.4 函数句柄和匿名函数函数句柄和匿名函数20function s,p=fcircle (r)% FCIRCLE calculate the area and perimeter of a circle of radii r% r 圆半径% s 圆面积% p 圆周长% 2004年年7月月30日编日编s=pi*r*r;p=2*pi*r;end 编函数文件求半径为编函数文件求半径为r的圆的面积和周长的圆的面积和周长函数定义行函数定义行H1注释行注释行函数体

9、函数体帮助文本区帮助文本区 3.3.1 函数文件函数文件 例例例例211. 函数文件的格式:函数文件的格式:H1行行 用一行文字来综述函数的功能帮助区注释说明语句段function output_args = Untitled( input_args)%UNTITLED5 Summary of this function goes here% Detailed explanation goes here end22u第一行引导词;u起函数名要有含义,与一致,即u列出函数与外界交换数据的u输入/输出量数目不限,可有可无;u输出多个变量,应用方括号 23 s,p=fcircle(22)s = 1.

10、5205e+03p = 138.2301 s=fcircle(22)s = 1.5205e+03 fcircle(22)ans = 1.5205e+03function ffcircle (r)s=pi*r*r;p=2*pi*r;endfunction s=ffcircle (r)s=pi*r*r;p=2*pi*r;end24 nargin(函数名函数名)nargout(函数名函数名)输入个数输入个数输出个数输出个数r = roots(c) nargin(roots)nargout(roots)ans = -1输入个数不确定,输入个数不确定,显示负值显示负值nargin(plot)25Jaco

11、bi迭代法的迭代法的MATLAB函数文件函数文件Jacobi.m如下:如下:functionif nargin=3 eps=1.0e-6; elseif nargin=eps x0=x; x=B*x0+f; n=n+1;end nargin(jaco)ans = 4 nargout(jaco)ans = 226u 文件第二行,是帮助文本的第一行;u %开头注释行,字符不被matlab执行;u 大写体的文件名大写体的文件名和运用关键词简要描述的函数功能;u 在线帮助使用;lookfor只H1行查询关键词。u H1行后%的注释行组成;u 详细说明函数功能,如输入/输出量总数和调用格式说明u Hel

12、p function_name显示所有的%的注释行。27 lookfor fcirclefcircle - calculate the area and perimeter of a circle of radii rhelp fcircleFCIRCLE calculate the area and perimeter of a circle of radii r r 圆半径圆半径 s 圆面积圆面积 p 圆周长圆周长 2004年年7月月30日编日编显示注释:显示注释:help 文件名文件名lookfor fcircle28函数体函数体n 实现函数文件功能的指令组成;n 接受输入量、程序结构控

13、制,创建输出量。注释注释n %开头注释行;n 函数文件任意位置 ,绿色表示;n 对语句注释说明。292 函数调用函数调用输出变量输出变量=函数名函数名(输入变量输入变量)调用格式调用格式: rr=234rr = 234 x,y=ff(rr)x = 1.7202e+005y = 1.4703e+003 whosName Size Bytes Class rr 1x1 8 double x 1x1 8 double y 1x1 8 double function s,p=fcircle(r)ff(2,3)*34 whos Name Size Bytes Class ans 1x1 8 double

14、 clear ff(333)ans =3.4837e+00530 函数调用特点函数调用特点开辟临时函数工作空间() 存放中间变量;运行完毕,中间变量被清除以及临时空间关闭;函数调用必与函数定义行同名同名;实参数的顺序、个数应与形参数一致,否则出错。31 运行后只,不保留function s,p=fcircle (r)s=pi*r*r;p=2*pi*r;endfunctionif nargin=3 eps=1.0e-6; elseif nargin=eps x0=x; x=B*x0+f; n=n+1;end A=10,-1,0;-1,10,-2;0,-2,10;b=9,7,6; xx,nn=ja

15、co(A,b,0,0,0,1.0e-6) xx,nn=jaco(10,-1,0;-1,10,-2;0,-2,10,9,7,6,0;0;0)xx = 0.9958 0.9579 0.7916nn = 11322022-3-732function abcd(a,b)c=a+bd=sin(c)e=log(d)保存为abcd.m在工作窗口中调用:a=2;b=3,4,5,6; a=2;b=3;c=a+b;d=sin(c) ;e=log(d) ;保存为:abcd.m在工作窗口中调用:abcd %文件名即可function e=abcdef(a,b)c=a+bd=sin(c)e=log(d)保存为abcd.

16、m在工作窗口中调用:a=2;b=3,4,5,6;ee= 例例例例 程序中变量均为33脚本式M文件函数式M文件无函数定义行;有函数定义行;无输入和输出量,也不一定要返回结果。可有输入和输出变量,并有返回结果;在base workspace中数据操作,运行后变量驻留其中;中间变量存在临时工作空间,它随函数结束而删除;全局变量。局部变量,除特别声明。 脚本文件和函数文件的区别脚本文件和函数文件的区别34所有变量驻留在基本工作空间中,即全程有效全程有效;所有函数都可对其进行存取和修改;定义全局变量是函数之间传递信息的手段。35仅在函数工作空间中间变量中间变量,影响仅限于函数本身;函数文件变量不能直接访

17、问workspace中的全局变量,它只能读取通过参数传入的变量;函数文件中定义的变量不能被另一个函数文件引用;如果在若干函数中,把某个变量定义为全局变量,那么这些函数可以共用这个变量。362022-3-736function avgs=test4(A)global S SS %定义全局变量m,n=size(A);for i=1:m s(i)=sum(A(i,:) endss=sum(s) avgs=ss/(m*n) end调用调用test4: A=4 3 5;6 7 8;3 5 7;1 3 4; test4(A)ans = 4.6667 global S SS ssss = 56 ss = 1

18、2 21 15 8注意:变量之间以空格分隔,而不能用逗号分隔。注意:变量之间以空格分隔,而不能用逗号分隔。global 变量名变量名调用格式:调用格式:例例例例一般大写字母一般大写字母372022-3-737u 一个M文件可含多个函数,第一个主函数主函数,其它子函数子函数;u主函数必须在最前面,子函数次序可随意调整;u子函数仅被主函数或同一文件其它子函数所调用;是主函数的一种,只在限定函数群可见,一般放在private命名子目录中。它只对父目录中函数可见。 38function c=test(a,b) %主函数c=test1(a,b)*test2(a,b);endfunction c=test

19、1(a,b) %子函数1c=a+b;endfunction c=test2(a,b) %子函数2c=a-b;end例例例例39主函数和子函数function =homework%problem 1x=-3:3;disp(problem 1)disp(the squares of the input values are listed below)y=square(x);disp(y)%problem 2r1=0.5;r2=0.25;disp(problem 2)disp(the cold work is)cold_work(r1,r2)%problem 3m=1,2,3;g=9.8;dz=5;

20、disp(problem 3)disp(the change in potential energy is)potential_energy(m,g,dz)function result=square(x)result=x.2;function result=cold_work(r1,r2)result=(r1.2-r2.2)/ r1.2;function result=potential_energy(m,g,dz)result=m.*g.*dz;例例例例40 两种创建句柄:两种创建句柄:class(hd)ans =function_handlehfun=str2func(fun) hfun

21、=fun携带函数路径的函数,反复调用方便,像变量调用。函数句柄函数句柄:hfun=+函数名函数名 hfun=str2func(fun) function fv=fun(x) fv=x-10.x+2;end41函数句柄调用:函数句柄调用:y1, y2, . = feval(fhandle, x1, ., xn) feval(hfun,3) ans =46.0977y1, y2, . = hfun( x1, ., xn) 直接调用:直接调用: hfun(3) ans =46.0977间接调用间接调用:调用函数文件一样调用函数文件一样执行由串指定的函数42匿名函数匿名函数 以符号开头; expres

22、sion为函数体; xlist为输入参数列表 f= (xlist)expression 简单形式,不要求M文件,在命令窗口或者M文件中定义。只含表达式、任意多输入和输出变量。特点:特点:格式:格式:ff=(x)sin(x) ff(2) feval(ff,2)yyy=(x)sin(x).*log(x)433.4程程序序控控制制结结构构4445if 语句语句switch 语句语句条件结构条件结构: :根据给定条件成立与否,执行不同语句。条件结构的语句条件结构的语句: : 46(1) 单分支结构if expression (条件表达式:条件表达式:关系和逻辑关系和逻辑) statements (语句

23、组语句组A)endif expression (条件)条件) statements1(语句组语句组A) statements2(语句组语句组B)end(2) 双分支结构双分支结构47 x=input(请输入请输入x的值的值:);if x=90 result=A; elseif x=80result=B; elseif x=70result=C; elseif x=60result=D; elseresult=E;end50A=input(A=);B=input(B=);if AB greaterelseif A=90 result=A; elseif x=80result=B; elseif

24、x=70result=C; elseif x=60result=D; elseresult=E;endfunction result=grade(per)k=floor(per/10)switch kcase 9,10result=A; case 8result=B; case 7result=C; case 6result=D; otherwiseresult=E;end55per=input(输入成绩)k=floor(per/10)switch kcase 9,10disp(A)case 8disp(B)case 7disp(C)case 6disp(D)otherwisedisp(E)e

25、nd第二种方法56循环结构循环结构: :按照给定的条件,重复执行指定的语句。循环结构的语句循环结构的语句: : 3.4.2 循环结构循环结构57for variable=expression(循环变量循环变量) statement(循环体)循环体)endfor for 循环变量循环变量= =初始值初始值: :步长步长: :终止值终止值 循环体语句循环体语句endend=58y=0; n=100;for k=1:n y=y+1/(2*k-1);endy当 n=100 时,求 y 的值n=100;i=1:2:2*n-1x=1./iy=sum(x)y无循环无循环采用循环语句会降低其执采用循环语句会降

26、低其执行速度,所以程序通常由行速度,所以程序通常由下面的程序来代替:下面的程序来代替:n=100;y=sum(1./(1:2:2*n-1);y例例例例59for m=100:999m1=fix(m/100); %求求m的百位数字的百位数字m2=rem(fix(m/10),10); %求求m的十位数字的十位数字m3=rem(m,10); %求求m的个位数字的个位数字if m=m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endend 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。例例例例Fix向零取证向零取证Rem除法求余除法求余60funct

27、ion H=hilbn(n)for i = 1:n for j = n:-1:1 H(i, j) = 1/(i+j-1); endendH建立Hilbter函数2. 循环的嵌套循环的嵌套function H=myhilb (n)for i = 1:n for j =1:n H(i,j)=1/(i+j-1); endend1( , )1A i jij例例例例61x=zeros(1,10); for n=1:10 x(n)=sin(n*pi/10);endx例例62x = rand(1,50000); %随机投币随机投币50000次次sum=0;k1=0;a=zeros (1,50000);b=

28、zeros (1,50000); %赋予初始赋予初始值占位,值占位,for (i=1:50000) sum=sum+1; %投币次数累计值投币次数累计值if x(i) 0.5 %投币正面概率投币正面概率 0.5 k1=k1+1; %投币正面次数累计值投币正面次数累计值enda(i)=k1; %投币正面次数累计值投币正面次数累计值b(i)=sum; %投币次数累计值投币次数累计值endf1=a./b; %正面概率figure(1)plot(b,f1),title(出现正面的频率变化曲线)figure(2)plot(b,1-f1),title(出现反面的频率变化曲线)k1%正面次数,k2=sum-

29、k1 %反面次数f1=k1/sum %正面频率,f2=1-f1 %反反面频率例例投掷硬币实验投掷硬币实验633. while 循环循环while expression (条件条件) statement(循环体)循环体)endn = 0;while s= 2n; n = n + 1 ;end sn求n为多少时,2n100,其值多少例例例例642022-3-764u for适用已知到循环次数循环次数,而不知循环运算目标;u while适用已知循环运算目标循环运算目标,而循环次数未知;u为了提高代码的运行效率,避免 for 循环的使用;4.4.for和和while循环语句区别循环语句区别652022

30、-3-765 计算级数计算级数:S=1+2+22+23+263= 6302nns=0;s=0;i=0;i=0; i64i 0 sum mean=sum/cntend例例例例67try 语句组1catch 语句组2end lasterr %显示出错原因3.4.3 tr3.4.3 try-catch语句语句Try检测程序代码是否出错;先试探语句组1,如出现错误,则将错误信息赋给lasterr保留;并转去执行语句组2。语句格式语句格式68 矩阵乘法运算要求两矩阵维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。A=1,2,3;4,5,6; B=7,8,9;10,11,12;t

31、ry C=A*B;catch C=A.*B;endClasterr %显示出错原因例例例例69 程序设计常遇到提前终止循环、跳出子程序、显示出错信息等情况,主要有等。701. break 和和 continuelbreak和和continue与循环结构与循环结构for 和和while相关语句,相关语句,它们一般与它们一般与if配合使用。配合使用。lbreak 终止循环,即跳出最内层循环 ;lcontinue结束本次循环,进行下次循环.71 求求100,1000之间第一个能被之间第一个能被21整除的整数整除的整数。for n=100:1000if rem(n,21)=0 continueendb

32、reakendn例例例例Rem除法求余除法求余72停止运行,控制权给键盘,命令窗口“”变成“K”;。对程序调试和程序运行中修改都很方便。 function abcdek(a,b)c=a+b;keyboardd=a*be=a/bendfunction abcdef(a,b)c=a+b;d=a*breturne=a/b*dabcdek(4,2)K a=2a = 2K returnd = 4e = 1例例例例输入return后,控制权将交回文件function abcde(a,b)c=a+b;d=a*be=a/bend73程序的暂停程序的暂停 pause pause 或或 pause(npause(

33、n) )若想强行终止程序的运行,可以使用若想强行终止程序的运行,可以使用 Ctrl+cCtrl+cp n n 是延迟时间,以秒为单位;是延迟时间,以秒为单位;p 缺省,将暂停程序,直到用户按任意键后继续缺省,将暂停程序,直到用户按任意键后继续l pause off pause off 屏蔽程序中所有 pause 的作用l pause on pause on 打开 pause 的作用74function abcdp (a,b)c=a+bd=sin(c)pausee=log(d)function abcd (a,b)c=a+bd=sin(c)e=log(d) abcd(3,4)c = 7d = 0.6570任意键任意键e = -0.4201例例例例755. echo在命令窗口显示执行过程的在命令窗口显示执行过程的M文件的命令文件的命令76 echo on edfor n=100:1000if rem(n,21)=0 continueif rem(n,21)=0 continueif rem(n,21)=0 continueif rem(n,21)=0 continueif rem(n,21)=0 continueif rem(n,21)=0endbreakendnn = 105 echo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论