matlab 定义函数(matlab定义函数_理学_高等教育_教育专区)
数学实验Matlab 自定义函数自定义函数的五种方式Matlab 自定义函数的五种方式命令文件/函数文件 命令文件 函数文件+ 函数文件 - 多个 M 文件 函数文件 函数文件 + 子函数 - 一个 M 文件 inline - 无需 M 文件 syms + subs 方式 - 无需 M 文件 字符串 + subs 方式 - 无需 M 文件自定义函数方式( 自定义函数方式(一)方式( ):命令文件/函数文件 ):命令文件 方式(1):命令文件 函数文件 + 函数文件%命令 函数文件:myfile1.m 命令/函数文件 命令 函数文件: clear for t=1:10; y=mylfg(t); fprintf('%4d^(1/3) = %6.4f\n',t,y); end调用函数时要注意实参与形参的匹配! 调用函数时要注意实参与形参的匹配! 实参 的匹配%函数文件:mylfg.m 函数文件: 函数文件 function y = mylfg(x) y=x^(1/3);函数名与文件名必须一致! 函数名与文件名必须一致!函数必须单独写一个文件! 函数必须单独写一个文件! 不能与命令文件写在同一个文件中! 不能与命令文件写在同一个文件中!自定义函数方式( 自定义函数方式(二)方式( ): ):函数文件 方式(2):函数文件 + 子函数%函数文件:funtry2.m 函数文件: 函数文件 function []=funtry2() for t=1:10 y=lfg2(t); fprintf('%4d^(1/3) = %6.4f\n',t,y); end function y=lfg2(x) y=x^(1/3); %%子函数 子函数函数文件中可以定义一个或多个子函数,此时我们称该函 函数文件中可以定义一个或多个子函数, 子函数 数为主函数 主函数, 数为主函数,子函数只能被主函数或同一个函数文件中的 其它子函数调用! 其它子函数调用!自定义函数方式( 自定义函数方式(三)方式( ): ):inline + 命令 函数文件 命令/函数文件 方式(3):inline 命令可以用来定义一个内联函数 命令可以用来定义一个内联函数 f=inline('函数表达式 函数表达式','变量1','变量2',...) 变量1 变量2 函数表达式 变量 变量 调用方式: y=f(数值列表 调用方式: 数值列表) 数值列表 代入的数值列表顺序应与定义时的变量名顺序一致 代入的数值列表顺序应与定义时的变量名顺序一致 数值列表顺序应与定义时的变量名例:自定义函数方式( 自定义函数方式(三)作为一个内部函数调用。
这种函数定义方式是将 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.4f\n',t,y); end fclose(fid); ezplot(lfg,[0,50])diff(lfg,'x')X自定义函数方式( 自定义函数方式(四)方式( ): 方式(4): syms + subssyms 定义一个符号表达式,用 subs 命令调用 定义一个符号表达式 符号表达式, syms f x %定义符号 定义符号 f=1/(1+x^2); %定义符号表达式 定义符号表达式 subs(f,'x',代替 x 的数值或符号 代替 的数值或符号)中已经定义过符号变量, 注:对于在 syms 中已经定义过符号变量,在 subs 中进行 替代时,单引号可以省略。
替代时,单引号可以省略。但如果在 syms 后又被重新 定义为其它类型,则必须加单引号,否则不可替换。 定义为其它类型,则必须加单引号,否则不可替换。自定义函数方式( 自定义函数方式(四)这种函数定义方法的一个特点是可以用符号进行替换该方法的缺点也是明显的: 该方法的缺点也是明显的:由于使用符号运算内 运算速度会大大降低。 核,运算速度会大大降低。自定义函数方式( 自定义函数方式(五)方式( ): ):字符串 方式(5):字符串 + subs直接定义一个字符串, 命令完成调用。 直接定义一个字符串,用 subs 命令完成调用。例: f='1/(1+x^2)'% 定义字符串z=subs(f,'x',2) g=subs(f,'x','y^2') 的单引号不可省略。本函数方式可以代入字符, 注:此处 x 的单引号不可省略。本函数方式可以代入字符, 但字符不能参与运算, 但字符不能参与运算,否则将自行转化成该字符的 ASCII 码运算,这与我们想要的结果可能会大相径庭。 码运算,这与我们想要的结果可能会大相径庭。 优点:占内存最少matlab 定义函数matlab 定义函数,定义格式方便自由。
优点:占内存最少,定义格式方便自由。 缺点:是无法对字符进行符号转化。 缺点:是无法对字符进行符号转化。自定义函数方式( 自定义函数方式(五)关于 subs 的一个注解subs 命令的一种比较方便的调用方法: 命令的一种比较方便的调用方法: 当所要替代的符号在调用前都已经有了数值定义,则 当所要替代的符号在调用前都已经有了数值定义 则 可以直接调用: 可以直接调用:subs(f)例: