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