1、第六章第六章 MATLAB的的m文件和函数句柄文件和函数句柄 matlab语言称为第四代编程语语言称为第四代编程语言,程序简洁、可读性很强而且调试十言,程序简洁、可读性很强而且调试十分容易。分容易。是是matlab重要组成部分。重要组成部分。m文件简介文件简介v用户如想灵活应用用户如想灵活应用matlab去解决实际问题,去解决实际问题,充分调用充分调用matlab的科学技术资源,就需要编的科学技术资源,就需要编辑辑m文件文件v包含包含matlab语言代码的文件称为语言代码的文件称为m文件,其文件,其扩展名为扩展名为m。v编辑编辑m文件可使用各种文本编辑器。文件可使用各种文本编辑器。一、一、ma
2、tlab的工作模式的工作模式v指令驱动模式指令驱动模式 通常通常matlab以指令驱动模式工作,即在以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这立即处理这条指令,并显示结果,这就是就是matlab命令行方式。命令行方式。命令行操作时,命令行操作时,matlab窗口只允许一次执行窗口只允许一次执行一行上的一个或几个语句一行上的一个或几个语句。x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1=0 1 2 3 4 5 6 7 8 9 10 x2=0 3 6 9x3=11.5000 8.5
3、000 5.5000 2.5000v在在matlab窗口输入数据和命令进行计算时,窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。当处理复杂问题和大量数据时是不方便的。因此应编辑因此应编辑m文件。文件。命令行方式程序可读性差,而且不能存储,命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文对于复杂的问题,应编写成能存储的程序文件。件。vm文件模式文件模式将将matlab语句构成的程序存储成以语句构成的程序存储成以m为扩展为扩展名的文件,然后再执行该程序文件,这种工名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。作模式称为程序文件模式。
4、程序文件不能在指令窗口下建立程序文件不能在指令窗口下建立,因为指令,因为指令窗口只允许一次执行一行上的一个或几个语窗口只允许一次执行一行上的一个或几个语句。句。二、m文件的创建v m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等。v具体的创建方法:1.在matlab命令窗 口点击file 菜单 new m-file编辑编辑存储存储2.点击点击file Save Workspace As 将工作空间中的内容存入文件。将工作空间中的内容存入文件。3.!edit 用用dos 下下edit 编辑器编制编辑器编制m文
5、件。文件。4.edit 用用matlab自带的编辑器编制自带的编辑器编制m文件。文件。v m文件编辑器的设定文件编辑器的设定 m文件编辑器可自己设定,设定方法是文件编辑器可自己设定,设定方法是matlab命令窗口命令窗口 options 菜单下点击菜单下点击 Edit Preference 选定选定m文件编辑器。文件编辑器。m文件编辑器缺省设置是文件编辑器缺省设置是 c:windowsnotepad.exe 还可设成:还可设成:c:windowswrite.exe c: c:program fileofficewinword.exe 注意:所创建的注意:所创建的m文件必须纳入文件必须纳入mat
6、lab搜索路搜索路 径后,才能在径后,才能在matlab命令窗口运行。命令窗口运行。三、matlab文件的类型1.数据文件数据文件.matv mat文件是文件是matlab以标准二进制格式保存的以标准二进制格式保存的数据文件,可将工作空间中有用的数据变数据文件,可将工作空间中有用的数据变量保存下来。量保存下来。v mat文件的生成和调用是由函数文件的生成和调用是由函数save和和load完成的。完成的。2.m文件文件 m文件的语法类似于文件的语法类似于c语言,但又有其自身特语言,但又有其自身特点。它只是一个简单的点。它只是一个简单的ASCII码文本文件,执码文本文件,执行程序时逐行解释运行程序
7、,行程序时逐行解释运行程序,matlab是解释是解释性的编程语言。性的编程语言。m文件有两类文件有两类独立的独立的m文件文件 称命令文件称命令文件 可调用可调用m文件文件 称函数文件称函数文件(1).命令文件命令文件 简单的简单的m文件文件 命令文件实际上是一串指令的集合,与在命命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。是一样的。没有输入输出参数。v命令文件包括两部分:注释文件和程序文件命令文件包括两部分:注释文件和程序文件%RANKNumber of linearly independent
8、rows or columns.%K=RANK(X)is the number of singular values of X%that are larger than MAX(SIZE(X)*NORM(X)*EPS.%K=RANK(X,tol)is the number of singular values of X that%are larger than tol.%Copyright(c)1984-94 by The MathWorks,Inc.%奇异值分解奇异值分解s=svd(x);if(nargin=1)tol=max(size(x)*max(s)*eps;endr=sum(s to
9、l);程序部分(2).matlab内置函数文件 matlab自定义的函数文件称内置函数文件 调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。例如:sin.m函数用type sin查不到。调用格式:y=sin(2*x)实际应用中:x=0:2*pi/180:2*pi;y=sin(2*x)plot(x,y)01234567-1-0.8-0.6-0.4-0.200.20.40.60.81(3).函数m文件 需要输入变量,返回输出变量v matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。函数函数m文件的格式:文件的格式:fu
10、nction 返回变量返回变量=函数名(输入变量)函数名(输入变量)注释说明语句段注释说明语句段 程序语句段程序语句段特定规则:特定规则:1.函数函数m文件第一行必须以单词文件第一行必须以单词function作为引导词,作为引导词,必须遵循如下形式:必须遵循如下形式:function=()2.m文件的文件名必须文件的文件名必须是是.m。3.程序中的变量均为局部变量,不保存在工作空间中。程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。其变量只在函数运行期间有效。function Hr=exm060301(flag)%t=(0:50)/50*2*pi;x=sin(t);y
11、=cos(t);Hr=cirline;%feval(Hr,flag,x,y,t)%function cirline(wd,x,y,t)%switch wdcase line plot(t,x,b,t,y,r,LineWidth,2)case circle plot(x,y,-g,LineWidth,8),axis square offotherwise error(输入宗量只能取输入宗量只能取 line 或或 circle!)endshgHH=exm060301(circle)t=0:2*pi/5:2*pi;x=cos(t);y=sin(t);%HH(circle,x,y,t)%P码文件码文件
12、 pcode expcode.m%当前目录当前目录pcode expcode.m inplace%能找到的目录能找到的目录(4).系统文件s函数 用于描述系统运动的专用函数,是特殊的 m 文件。s 函数有3类:由simulink结构图自动创建 可用c语言程序设计mex文件直 接定义 用函数m文件编写 s函数一旦创建,即可在框图中使用,也可在文件中调用。S函数的调用格式 sys,x0=sfunction(t,x,u,flag)S函数与函数m文件类似,只是输入、输出变量是限定的。系统状态状态初值用户定义的系统当前时刻当前状态值当前输入值标志量(5).函数句柄 函数句柄优点:v方便地实现函数间互相调
13、用v兼容函数加载的所有方式v拓宽子函数包括局部函数的使用范围v提高函数调用的可靠性v减少程序设计中的冗余v提高重复执行的效率v数组、结构数组、细胞型数组结合定义数据函数句柄的创建和显示函数句柄的创建和显示 定义函数句柄的定义只需在提示符定义函数句柄的定义只需在提示符后添加相应后添加相应函数的函数名函数的函数名 f_h=plotf_h=plot 函数句柄的内容通过函数句柄的内容通过functions显示显示 functions(f_h)ans=function:plot type:overloaded file:MATLAB built-in function methods:1x1 struc
14、t matlab的函数类型的函数类型 simple 未加载的内部函数未加载的内部函数.m文件文件 overloaded 加载的内部函数加载的内部函数.m文件文件 subfunction 子函数子函数 constructor matlab类的创建函数类的创建函数 private 局部函数局部函数函数句柄的调用和操作可通过函数feval进行函数句柄的调用 feval(函数句柄)f_h1=peaks feval(f_h1)feval(函数句柄,参数列表)f_h=plot feval(f_h,0:10,0:10)函数句柄与函数名字符串转换 func2str 函数名字符串转换函数句柄 str2func
15、函数句柄转换函数名字符串funh=str2func(det)ans=funh=det func2str(funh)ans=det四、matlab的程序结构 matlab语言的程序结构与其它高级语言是一致的,语言的程序结构与其它高级语言是一致的,分为顺序结构,循环结构,分支结构。分为顺序结构,循环结构,分支结构。(1).顺序结构顺序结构 依次顺序执行程序的各条语句依次顺序执行程序的各条语句(2).循环结构循环结构 被重复执行的一组语句,被重复执行的一组语句,循环是计算机解决问题的主要手段。循环是计算机解决问题的主要手段。循环语句主要有:循环语句主要有:for end语法为:语法为:for i=表
16、达式表达式 (表达式为一个向量)(表达式为一个向量)可执行语句可执行语句 end例:利用例:利用for循环求循环求1!+2!+3!+5!的值!的值 sum=0;for i=1:5 pdr=1;for k=1:i pdr=pdr*k;end sum=sum+pdr;endsum=153 while end 循环循环 while循环将循环体中的语句循环执行不定循环将循环体中的语句循环执行不定次数。次数。语法为:语法为:while 表达式表达式 循环体语句循环体语句 end 表达式一般是由逻辑运算和关系运算以及一表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;般运算组成的
17、,以判断循环的进行和停止;只要表达式的值只要表达式的值 非非0,继续循环;直到表达式,继续循环;直到表达式值为值为0,循环停止。,循环停止。例:用例:用while循环求循环求1100间整数的和间整数的和 sum=0;i=1;while i,=,=,=等等 逻辑操作符逻辑操作符&,|,等等 逻辑函数:逻辑函数:isequal 若是相等则为真若是相等则为真 isempty 若是空矩阵则为真若是空矩阵则为真 isstr 若是字符串则为真若是字符串则为真 xor 一真一假返回真一真一假返回真 all 全为真、全非全为真、全非0则为真则为真 any 只要有只要有1个非个非0则为真则为真例:编写例:编写m
18、函数,计算函数值函数,计算函数值 x (x=1)2x-1 (1x=10)x=input(input x=);if x=10 y=3*x-11else y=2*x-1endfunction exm0701_2(a,b)%This is my second example.%aDefine the limit of variable x.%bDefine the limit of variable y.clf;x=-a:0.2:a;y=-b:0.2:b;for i=1:length(y)for j=1:length(x)if x(j)+y(i)1 z(i,j)=0.5457*exp(-0.75*y
19、(i)2-3.75*x(j)2-1.5*x(j);elseif x(j)+y(i)=-1 z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2+1.5*x(j);else z(i,j)=0.7575*exp(-y(i)2-6.*x(j)2);end endendaxis(-a,a,-b,b,min(min(z),max(max(z);colormap(flipud(winter);surf(x,y,z);shgswtich 表达式(标量或字符串)表达式(标量或字符串)case 1 语句语句1case 2 语句语句2otherwiseend%exswt1x=input
20、(x=)switch xcase 2 disp(上机实习上机实习)case 1 disp(听课听课)otherwise disp(no matlab)endtry命令命令 1%总执行,正确跳出结构总执行,正确跳出结构catch 命令命令 2%检检1错执行错执行catch end%再错结束再错结束clear,N=4;A=magic(3);%设置设置3行行3列矩阵列矩阵A。try A_N=A(N,:),%取取A的第的第N行元素行元素catch A_end=A(end,:),%如果取如果取A(N,:)出错,则改取出错,则改取A的最后一行。的最后一行。endlasterr%显示出错原因显示出错原因 五
21、、matlab程序流的控制 matlab的控制语句同c语言有相似之处,但没有c 语言复杂、灵活和多变。因而语法比较简单,容易掌握。vecho 指令 用来控制m文件在执行过程中是否 显示 echo on 打开所有命令文件的显示方式 echo off 关闭所有命令文件的显示方式 echo 在以上两者间切换 v echo对于命令文件函数文件有所不同,命令文件用法简单,函数对所有命令起作用;函数文件用法较复杂,具体请help查询。echo file on 打开file函数文件的显示方式 echo file off 关闭file函数文件的显示方式 echo file 切换file函数文件的显示方式 ec
22、ho on all 打开所有函数文件的显示方式 echo off all 关闭所有函数文件的显示方式return 被调函数终止执行并交执行被调函数终止执行并交执行权于调用函数权于调用函数vinput 提示用户从键盘输入数值、字符串、表达式。例:n=input(How many apples=)How many apples=5n=5n=input(How many apples=,s)How many apples=an applen=an applevkeyboard 与与input类似,功能更强类似,功能更强 keyboard 调用键盘与调用调用键盘与调用m文件一样,当文件一样,当keyb
23、oard在在m文件中出现时,它停止文件的执行并文件中出现时,它停止文件的执行并控制键盘,用于修改程序。控制键盘,用于修改程序。vmenu 产生一个用户可选择输入的菜单产生一个用户可选择输入的菜单 格式:格式:k=menu(标题标题,菜单菜单1,菜单菜单2)vpause 暂停,等待用户响应 可令m文件执行暂停,并在继续执行前按任一个键。break 中断中断 break 中断中断for,while循环语句的执行,在嵌循环语句的执行,在嵌套循环结构中,套循环结构中,break进入最里层循环退出。进入最里层循环退出。error warning变长度输入输出宗量变长度输入输出宗量varargin var
24、argout Z=PEAKS;Z=PEAKS(N);Z=PEAKS(V);Z=PEAKS(X,Y);PEAKS;PEAKS(N);PEAKS(V);PEAKS(X,Y);X,Y,Z=PEAKS;X,Y,Z=PEAKS(N);X,Y,Z=PEAKS(V);局部变量局部变量(local)全局变量全局变量(global)不提倡不提倡使用(不利函数封装)使用(不利函数封装)程序调试程序调试 直接调试:分号去掉;直接调试:分号去掉;echo显示;显示;keyboard查询;查询;m函数文件放开;函数文件放开;debug调试:调试:高手常用高手常用function nn,xx,xmu,xstd=exmde
25、bug(x)%xmu=mean(x);xstd=std(x);nn,xx=hist(x);if nargout=0 barzzy0(nn,xx,xmu,xstd)%endfunction barzzy0(nn,xx,xmu,xstd)%clf,bar(xx,nn);hold onYlimit=get(gca,YLim);yy=0:Ylimit(2);%xxmu=xmu*ones(size(yy);xxmu=xmu*size(yy);xxL=xxmu/xmu*(xmu-xstd);xxR=xxmu/xmu*(xmu+xstd);plot(xxmu,yy,r,Linewidth,3)%plot(x
26、xL,yy,rx,MarkerSize,8)plot(xxR,yy,rx,MarkerSize,8),hold offrandn(seed,1);x=randn(1,100);exmdebug(x)xxmu=xmu*ones(size(yy)六、文件操作 matlab文件输入、输出(文件输入、输出(I/O)函数允许把其它格)函数允许把其它格式的数据文件直接读进式的数据文件直接读进matlab,它是以,它是以c语言文语言文件件I/O函数为基础的。函数为基础的。1.打开和关闭文件(打开和关闭文件(fopen,fclose)格式:格式:fid=fopen(数据文件数据文件,r)r 读读 w 写写 a
27、 附加附加 r+读写读写v文件一旦打开,即可进行读写操作。sta=fclose(fid)关闭上述打开文件 sta=fclose(all)关闭所有打开的文件v与save,load类似,是matlab专用数据文件读写工具(*.mat)。2.读写二进制数据文件 fread,fwrite 可读写数据文件,文本文件。例:fid=fopen(user.dat,r)a=fread(fid,50)sta=fclose(fid)strcount(poem,an)查找字符串查找字符串函数:函数:fgetl fgets(不包括换行符)不包括换行符)读取有格式文件读取有格式文件strcount.mfunction y
28、=strcount(filename,str)%寻找指定字符串在文件中出现的次数寻找指定字符串在文件中出现的次数fid=fopen(filename,rt);y=0;while feof(fid)=0 line=fgetl(fid);matches=findstr(line,str);num=length(matches);if num0 y=y+num;fprintf(1,%d:%sn,num,line);end endfclose(fid)fil.txtOranges and les,Orangutans and monkeys,Dragon or fleas.fscanf 不用循环,自动
29、完成不用循环,自动完成%s 字符串字符串%d 十进制十进制%g双精度浮点双精度浮点%exfscanf1.mfid=fopen(test.dat,r);mydata=fscanf(fid,%g);pause,fseek(fid,0,bof)%指针返回指针返回mydata33=fscanf(fid,%g,3,3);pause,fseek(fid,0,bof)%指针返回指针返回mydata43=fscanf(fid,%g,4,3);f=fclose(fid);%exfscanf.mfid=fopen(magic1.dat,r);mydata=fscanf(fid,%g);f=fclose(fid)f
30、id=fopen(magic1.dat,r);mydata,count=fscanf(fid,%g,3 3);f=fclose(fid)fprintf 写入文本文件,不用循环,自动完成写入文本文件,不用循环,自动完成%s 字符串字符串%d 十进制十进制%g双精度浮点双精度浮点sprintf 写入字符串写入字符串exsprintf写入有格式文件写入有格式文件x=1:5;y=x;x.2;fid=fopen(st.dat,w);t=fprintf(fid,Square Function nn);c=fprintf(fid,%5d%5dn,y)fclose(fid)sprintf 写入字符串写入字符串
31、rt=sprintf(The square root of%f is%d10.8e.n,2,sqrt(2)七、应用程序接口 应用程序接口是matlaab的附加组件。是一个由相关函数组成的接口函数库,可实现与外部程序的交互。vMEX文件:是matlab环境下调用C、FORTRAN 语言编写的应用程序模块。vmatlab 计算引擎:在使用C、FORTRAN编程时 可调用matlab函数库进行计算。vMAT文件:实现matlab与C、FORTRAN语言程序间的 数据交换八、matlab编译matlab编译的原因:1.提高运算速度2.隐藏特定算法3.可产生独立的m文件matlab编译函数:mccmcc
32、 -x*.m circle_f.m 观察产生的新文件观察产生的新文件 MATLAB编译器编译器 对对MATLAB产生了新的期望:产生了新的期望:一一 希望程序能运行得更快;希望程序能运行得更快;二二 希望获得可摆脱希望获得可摆脱MATLAB环境而独立运行环境而独立运行的可执行软件。的可执行软件。编译器的功能编译器的功能 编译器的局限性编译器的局限性MCCMCC 几种调用格式几种调用格式MCC 几种调用格式几种调用格式编译器宏选项功能一览表编译器宏选项功能一览表v函数的定义及申明 -使用方式:调用/嵌套 -协作方式:主函数/子函数/嵌套函数 -内部变量:生存周期控制v控制语句 -if/if-el
33、se/if-elseif-else -switch-case -for/while if 语句一般形式 if logical_expression block of statements elseif logical_expression block of statements else block of statements end例例 输入三角形的三条边,求面积。输入三角形的三条边,求面积。A=input(请输入三角形的三条边:请输入三角形的三条边:);if A(1)+A(2)A(3)&A(1)+A(3)A(2)&A(2)+A(3)A(1)p=(A(1)+A(2)+A(3)/2;s=sqr
34、t(p*(p-A(1)*(p-A(2)*(p-A(3);disp(s);else disp(不能构成一个三角形。不能构成一个三角形。)end运行:运行:请输入三角形的三条边:请输入三角形的三条边:4 5 6 9.9216选择结构选择结构【例例】输入一个字符,若为大写字母,则输出其后继字输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。则原样输出。c=input(,s);if c=A&c=a&c=z disp(setstr(abs(c)-1);else disp(c);end switch 语句
35、一般形式 switch expression case value1,block of statements case value2,block of statements .otherwise,block of statements end【例例】根据变量根据变量 num 的值来决定显示的内容。的值来决定显示的内容。num=input(请输入一个数请输入一个数);switch num case-1 disp(I am a teacher.);case 0 disp(I am a student.);case 1 disp(You are a teacher.);otherwise disp(
36、You are a student.);end -循环结构 根据条件重复执行程序指令或模块 for 语句%计数循环 一般形式 for index=expression block of statements end while 语句 一般形式 while expression block of statements end循环的嵌套循环的嵌套如果一个循环结构的循环体又包括一个如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多循环结构,就称为循环的嵌套,或称为多重循环结构。重循环结构。多重循环的嵌套层数可以是任意的。可多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做
37、二重循环、三以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。处于外部的循环叫作外循环。【例】求100,1000以内的全部素数。n=0;for m=100:1000 flag=1;j=m-1;i=2;while i=j&flag if rem(m,i)=0 flag=0;end i=i+1;end if flag n=n+1;prime(n)=m;end end prime%变量prime存放素数循环中断控制:while 语句实例 x=rand(1,10);k=1;while k0.8 break end k=
38、k+1;end函数返回控制:while 语句实例 x=rand(1,10);k=1;while k0.8 return end k=k+1;end plot(t,y(:,1),t,y(:,2),-,t,y(:,3),.-,t1 t1,-100 100,k:);datetick(x,dd/mm,keeplimits);axis tight;title(mybirthday);legend(Physical,Emotional,Intellectual);xlabel(timedd/mm);ylabel(biorythm index%)用户参数交互输入 参数的作用:使程序更加通用灵活 参数输入的主
39、要模式 -input 函数输入参数 -keyboard函数(键盘模式)-menu 函数(菜单模式)键盘输入模式 基本格式:v=input(显示的提示信息);功能实现:向用户显示提示信息 将用户的输入赋给v 使用实例 freq=input(frequence is)结果 frequence is(等待键盘输入,回车确认输入完成)键盘控制模式 基本格式:keyboard;功能实现:临时终止程序执行 将控制权交给命令窗口 利用回车结束键盘控制 使用实例 查询/修改函数工作空间的变量 建立新的函数空间的变量菜单输入模式 基本格式:item_no=menu(title,item1,itemn);功能实现
40、:显示菜单 用户选择按钮 返回菜单序号 使用实例 s=menu(signal,red,green,yellow)可结合选择控制语句使用 循环向量化计算模式 目的:向量计算替代循环模式 实例:tic tic for t=0:0.01:100 t=0.0:0.01:100 i=i+1;y(i)=sin(t)y=sin(t)end toc toc 耗时7.58 耗时0.01 内存使用内存使用/管理管理 目的目的:提高内存使用效率提高内存使用效率 主要的命令主要的命令 clear%清楚变量清楚变量 pack%将变量寄宿在磁盘将变量寄宿在磁盘 quit%退出退出Matlab环境环境 save%将变量数据
41、存入文件将变量数据存入文件 load%将文件数据加载进入工作空间将文件数据加载进入工作空间【例例】利用函数文件,实现直角坐标利用函数文件,实现直角坐标(x,y)与极与极坐标坐标(,)之间的转换。之间的转换。函数文件函数文件tran.m:function gama,theta=tran(x,y)gama=sqrt(x*x+y*y);theta=atan(y/x);调用调用tran.m的命令文件的命令文件main1.m:x=input(Please input x=:);y=input(Please input y=:);gam,the=tran(x,y);gam the已知转换公式为:已知转换公
42、式为:极坐标的矢径:极坐标的矢径:=极坐标的幅角:极坐标的幅角:=函数文件函数文件 在MATLAB中,全局变量用命令global定义。函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程有效。所有的函数都可以对它进行存取和修改。因此,定义全局变量是函数间传递信息的一种手段。函数文件【例】全局变量应用示例先建立函数文件wadd.m,该函数将输入的参数加权相加。function f=wadd(x,y)%add two variable globa
43、l ALPHA BETA f=ALPHA*x+BETA*y;在命令窗口中输入:global ALPHA BETA ALPHA=1;BETA=2;s=wadd(1,2)输出为:s=5Matlab程序调试 主要工具主要工具:m编辑器内嵌编辑器内嵌debugger功能功能 程序错误程序错误 语法或格式错误语法或格式错误:显式且容易定位显式且容易定位 功能或计算错误功能或计算错误:算法错误算法错误 纠错技巧纠错技巧 显示中间变量的内容显示中间变量的内容 利用利用Keyboard语句语句,查看函数工作空间的变量内容查看函数工作空间的变量内容 设置断点或单步执行方式设置断点或单步执行方式小 结v 本节主要
44、介绍了matlab语言程序设计基础。matlab 编程简单,容易掌握。v 通过学习,应能编写简单程序结 束 语v本课程基于matlab语言基础,望大家以后进一步学习,方能编写出高质量m文件,以适应高科技的需要。v望你们今后能成为matlab高手。11醉翁亭记 1反复朗读并背诵课文,培养文言语感。2结合注释疏通文义,了解文本内容,掌握文本写作思路。3把握文章的艺术特色,理解虚词在文中的作用。4体会作者的思想感情,理解作者的政治理想。一、导入新课范仲淹因参与改革被贬,于庆历六年写下岳阳楼记,寄托自己“先天下之忧而忧,后天下之乐而乐”的政治理想。实际上,这次改革,受到贬谪的除了范仲淹和滕子京之外,还
45、有范仲淹改革的另一位支持者北宋大文学家、史学家欧阳修。他于庆历五年被贬谪到滁州,也就是今天的安徽省滁州市。也是在此期间,欧阳修在滁州留下了不逊于岳阳楼记的千古名篇醉翁亭记。接下来就让我们一起来学习这篇课文吧!【教学提示】结合前文教学,有利于学生把握本文写作背景,进而加深学生对作品含义的理解。二、教学新课目标导学一:认识作者,了解作品背景作者简介:欧阳修(10071072),字永叔,自号醉翁,晚年又号“六一居士”。吉州永丰(今属江西)人,因吉州原属庐陵郡,因此他又以“庐陵欧阳修”自居。谥号文忠,世称欧阳文忠公。北宋政治家、文学家、史学家,与韩愈、柳宗元、王安石、苏洵、苏轼、苏辙、曾巩合称“唐宋八
46、大家”。后人又将其与韩愈、柳宗元和苏轼合称“千古文章四大家”。关于“醉翁”与“六一居士”:初谪滁山,自号醉翁。既老而衰且病,将退休于颍水之上,则又更号六一居士。客有问曰:“六一何谓也?”居士曰:“吾家藏书一万卷,集录三代以来金石遗文一千卷,有琴一张,有棋一局,而常置酒一壶。”客曰:“是为五一尔,奈何?”居士曰:“以吾一翁,老于此五物之间,岂不为六一乎?”写作背景:宋仁宗庆历五年(1045年),参知政事范仲淹等人遭谗离职,欧阳修上书替他们分辩,被贬到滁州做了两年知州。到任以后,他内心抑郁,但还能发挥“宽简而不扰”的作风,取得了某些政绩。醉翁亭记就是在这个时期写就的。目标导学二:朗读文章,通文顺字
47、1初读文章,结合工具书梳理文章字词。2朗读文章,划分文章节奏,标出节奏划分有疑难的语句。节奏划分示例环滁/皆山也。其/西南诸峰,林壑/尤美,望之/蔚然而深秀者,琅琊也。山行/六七里,渐闻/水声潺潺,而泻出于/两峰之间者,酿泉也。峰回/路转,有亭/翼然临于泉上者,醉翁亭也。作亭者/谁?山之僧/曰/智仙也。名之者/谁?太守/自谓也。太守与客来饮/于此,饮少/辄醉,而/年又最高,故/自号曰/醉翁也。醉翁之意/不在酒,在乎/山水之间也。山水之乐,得之心/而寓之酒也。节奏划分思考“山行/六七里”为什么不能划分为“山/行六七里”?明确:“山行”意指“沿着山路走”,“山行”是个状中短语,不能将其割裂。“望之
48、/蔚然而深秀者”为什么不能划分为“望之蔚然/而深秀者”?明确:“蔚然而深秀”是两个并列的词,不宜割裂,“望之”是总起词语,故应从其后断句。【教学提示】引导学生在反复朗读的过程中划分朗读节奏,在划分节奏的过程中感知文意。对于部分结构复杂的句子,教师可做适当的讲解引导。目标导学三:结合注释,翻译训练1学生结合课下注释和工具书自行疏通文义,并画出不解之处。【教学提示】节奏划分与明确文意相辅相成,若能以节奏划分引导学生明确文意最好;若学生理解有限,亦可在解读文意后把握节奏划分。2以四人小组为单位,组内互助解疑,并尝试用“直译”与“意译”两种方法译读文章。3教师选择疑难句或值得翻译的句子,请学生用两种翻
49、译方法进行翻译。翻译示例:若夫日出而林霏开,云归而岩穴暝,晦明变化者,山间之朝暮也。野芳发而幽香,佳木秀而繁阴,风霜高洁,水落而石出者,山间之四时也。直译法:那太阳一出来,树林里的雾气散开,云雾聚拢,山谷就显得昏暗了,朝则自暗而明,暮则自明而暗,或暗或明,变化不一,这是山间早晚的景色。野花开放,有一股清幽的香味,好的树木枝叶繁茂,形成浓郁的绿荫。天高气爽,霜色洁白,泉水浅了,石底露出水面,这是山中四季的景色。意译法:太阳升起,山林里雾气开始消散,烟云聚拢,山谷又开始显得昏暗,清晨自暗而明,薄暮又自明而暗,如此暗明变化的,就是山中的朝暮。春天野花绽开并散发出阵阵幽香,夏日佳树繁茂并形成一片浓荫,
50、秋天风高气爽,霜色洁白,冬日水枯而石底上露,如此,就是山中的四季。【教学提示】翻译有直译与意译两种方式,直译锻炼学生用语的准确性,但可能会降低译文的美感;意译可加强译文的美感,培养学生的翻译兴趣,但可能会降低译文的准确性。因此,需两种翻译方式都做必要引导。全文直译内容见我的积累本。目标导学四:解读文段,把握文本内容1赏析第一段,说说本文是如何引出“醉翁亭”的位置的,作者在此运用了怎样的艺术手法。明确:首先以“环滁皆山也”五字领起,将滁州的地理环境一笔勾出,点出醉翁亭坐落在群山之中,并纵观滁州全貌,鸟瞰群山环抱之景。接着作者将“镜头”全景移向局部,先写“西南诸峰,林壑尤美”,醉翁亭坐落在有最美的