资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,数学实验,Matlab,自定义函数,Matlab,自定义函数的五种方式,命令文件,/,函数文件,+,函数文件,多个,M,文件,自定义函数的五种方式,函数文件,+,子函数,一个,M,文件,inline,无需,M,文件,syms,+subs,方式,无需,M,文件,字符串,+subs,方式,无需,M,文件,%,命令/函数文件:,myfile1.m,clear,for t=1:10;,y=mylfg(t);,fprintf(%4d(1/3)=%6.4fn,t,y);,end,%,函数文件:,mylfg.m,function y=mylfg(x),y=x(1/3);,函数必须单独写一个文件!不能与命令文件写在同一个文件中!,函数名与文件名必须一致!,调用函数时要注意,实参,与,形参,的匹配!,自定义函数方式(一),方式(1):,命令文件,/,函数文件+函数文件,自定义函数方式(二),%,函数文件:,funtry2.m,function=funtry2(),for t=1:10,y=,lfg2,(t);,fprintf(%4d(1/3)=%6.4fn,t,y);,end,function y=,lfg2,(x),%,子函数,y=x(1/3);,函数文件中可以定义一个或多个,子函数,,此时我们称该函数为,主函数,,子函数,只能,被主函数或同一个函数文件中的其它子函数调用!,方式(,2,):,函数文件+子函数,f=inline(,函数表达式,变量,1,变量,2,.,),y=f(,数值列表,),代入的,数值列表,顺序应与定义时的,变量名,顺序一致,例:,自定义函数方式(三),方式(,3,):,inline+,命令,/,函数文件,inline,命令可以用来定义一个,内联函数,调用方式:,这种函数定义方式是将,f,作为一个内部函数调用。其特点是:调用方式,最接近于我们平时对函数的定义,,使程序更具可读性。同时由于它是基于,Matlab,的数值计算内核的,所以它的,运算速度较快,,程序更有效率。,这种定义方式的缺点:,定义一个内联函数用去的内存空间比相同条件下其他的方法要大得多。,该方法,只能对数值进行代入,,不支持符号代入,并且对于定义后的函数,不能进行求导等符号运算,。,自定义函数方式(三),自定义函数方式(三),%,函数文件:,function=funtry3(),lfg=,inline,(x.(1/3);,%,表达式两端的单引号不可缺少,fid=fopen(myfile3.txt,w);,for t=1:50;,y=lfg(t);,fprintf(fid,%4d(1/3)=%6.4fn,t,y);,end,fclose(fid);,ezplot(lfg,0,50),diff(lfg,x),自定义函数方式(三),X,注:,对于在,syms,中已经定义过符号变量,在,subs,中进行替代时,单引号可以省略。但如果在,syms,后又被重新定义为其它类型,则必须加单引号,否则不可替换。,syms,定义一个,符号表达式,,用,subs,命令调用,syms,f x,%,定义符号,f=1/(1+x2);,%,定义符号表达式,subs,(f,x,代替,x,的数值或符号,),自定义函数方式(四),方式(,4,):,syms,+subs,这种函数定义方法的一个特点是可以用符号进行替换,该方法的缺点也是明显的:由于使用符号运算内核,运算速度会大大降低。,自定义函数方式(四),注:,此处,x,的单引号不可省略。本函数方式可以代入字符,但字符不能参与运算,否则将自行转化成该字符的,ASCII,码运算,这与我们想要的结果可能会大相径庭。,直接定义一个字符串,用,subs,命令完成调用。,例:,f=,1/(1+x2),%,定义字符串,z=subs(f,x,2,),g=subs(f,x,y2,),优点:占内存最少,定义格式方便自由。,缺点:是无法对字符进行符号转化。,自定义函数方式(五),方式(,5,):,字符串,+subs,subs,命令的一种比较方便的调用方法:,当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:,subs(f),例:,自定义函数方式(五),关于,subs,的一个注解,
展开阅读全文