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);

函数文件中可以定义一个或多个子函数,此时我们称该函数为主函数,子函数只能被主函数或同一个函数文件中的其它子函数调用!

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 后又被重新定义为其它类型,则必须加单引号。
这种函数定义方法的一个特点是可以用符号进行替换
在这里插入图片描述该方法的缺点也是明显的:由于使用符号运算内核,运算速度会大大降低。

  • 17
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值