找回密码
 注册
关于网站域名变更的通知
查看: 385|回复: 1
打印 上一主题 下一主题

Matlab中函数定义方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-25 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
Matlab自定义函数的六种方法8 R0 W. t' k7 V
n2、函数文件+子函数:定义一个具有多个自定义函数的M文件;
n4、匿名函数;
n6、字符串+subs:无需M文件,直接定义。
1、函数文件+调用函数文件:定义多个M文件
clear
for t=1:10
fprintf(‘M^(1/3)=%6.4f\n’,t,y);
%自定义函数文件: mylfg.m
Y=x^(1/3);
%命令文件:funtry2.m
for t=1:10
fprintf(‘M^(1/3)=%6.4f\n’);
function y=lfg2(x)
%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。
%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。
例如:
z=f(2,3)
注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。
Clear
f=’x^2’;
g=x^2;
使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。例如:
>> fh={@cos,@sin};
    @cos    @sin
用syms定义一个符号表达式,用subs调用:
f=1/(1+x^2); %定义符号表达式
注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。
Syms f x
subs(f, ‘x’,’y^2’)
1/(1+(y^2)^2)
直接定义一个字符串,用subs命令调用。例如:
z=subs(f,’x’,2)
注:优点是,占用内存最少,定义格式方面自由。
当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f).例如:
x=2;y=3;
ans=12
详细:Matlab中同一文件定义子函数的方法
在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同
...
...
...
function mainFunc()
a = myfunc1();
end
function myfunc1()
end
在第二种情况中,myfunc1和主函数就是两个独立的函数,和把它们写在两个独立的文件
果不是故意为之,就不合适了。
对于嵌套函数,函数定义中的end必不可少。
例子:
% %-----------------------------------------------------------------------
%子函数举例
max2=find_max(7,3,9)
if (a>=b)&(a>=c)
elseif (b>=a)&(b>=c)
else
end
注意:
如将上程序中的第一行屏蔽掉,即
会出现下面的错误
下面一段文字是摘自matlab帮助中的一段文字:end在function中的使用
尽管大多数情况下,end在function的用法是可选的,但也可以用它标记一个M文件函数的结束。end语句仅在使用一个或多个嵌套函数的情况下才是要求的。在诸如此类嵌套函数的M-文件中,每一个函数(包括主调函数,嵌套函数,私有函数和子函数)必须以一个end语句来结束。可以使用end结束任一函数类型,但这样做除了M-文件包含一个嵌套函数其他情况并非必要的。
2 }/ I1 |# Q' Q1 H  [
7 [1 ?  y' s6 n' B4 H* a( q& `0 \6 M

该用户从未签到

2#
发表于 2020-8-25 15:46 | 只看该作者
Matlab中函数定义方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-23 11:28 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表