Matlab⾃定义函数的四种⽅式
⾃定义函数的四种⽅式
命令⽂件/函数⽂件+函数⽂件–多个M⽂件
%命令/函数⽂件:myfile.m
clear
for t=1:10
y=mylfg(t);
fprintf('%d^(1/3)=%6.4f\n',t,y);
end
调⽤函数时要注意实参与形参的匹配
%函数⽂件:mylfg.m
function y=mylfg(x)
y=x^(1/3);
函数名与⽂件名必须⼀致
函数必须是单独⼀个⽂件!不能与命令⽂件写在同⼀个⽂件中!
函数⽂件+⼦函数–⼀个M⽂件
%函数⽂件:funtry2.m
function []=funtry2()
for t=1:10
y=lfg2(t);
fprintf('%d^(1/3) = %6.4f\n',t,y);
end
function y=lfg2(x)%%⼦函数
y=x^(1/3);matlab求导
函数⽂件中可以定义⼀个或多个⼦函数,此时我们称该函数为主函数,⼦函数只能被主函数或同⼀个函数⽂件中的其它⼦函数调⽤!inline–⽆需M⽂件
inline 命令可以⽤来定义⼀个内联函数
f=inline('函数表达式','变量1','变量2',...)
调⽤⽅式:y=f(数值列表)
代⼊的数值列表顺序应与定义时的变量名顺序⼀致
>> f=inline('x^2+y','x','y')
>> z1=f(2,3)
>> z2=f(3,2)
这种函数定义⽅式是将 f 作为⼀个内部函数调⽤。其特点是:调⽤⽅式最接近于我们平时对函数的定义,使程序更具可读性。同时由于它是基于 Matlab 的数值计算内核的,所以它的运算速度较快,程序更有效率。
这种定义⽅式的缺点:
定义⼀个内联函数⽤去的内存空间⽐相同条件下其他的⽅法要⼤得多。
该⽅法对于定义后的函数不能进⾏求导等符号运算。
%函数⽂件:function []=funtry3()
lfg=inline('x.^(1/3)');
%表达式两端的单引号不可缺少
for t=1:10;
y=lfg(t);
fprintf('%d^(1/3) = %6.4f\n',t,y);
end
ezplot(lfg,0,10)
syms+subs⽅式–⽆需M⽂件
⽅式(4): syms + subs
syms 定义⼀个符号表达式,⽤ subs 命令调⽤
syms f x    %定义符号
f=1/(1+x^2);%定义符号表达式
subs(f,'x',代替 x 的数值或符号)
对于在 syms 中已经定义过符号变量,在 subs 中进⾏替代时,单引号可以省略。但如果在 syms 后⼜被重新定义为其它类型,则必须加单引号。
这种函数定义⽅法的⼀个特点是可以⽤符号进⾏替换
该⽅法的缺点也是明显的:由于使⽤符号运算内核,运算速度会⼤⼤降低。