概述
MATLAB函数输入的参数过多和缺少参数输入
MATLAB的一些函数,诸如ode45,ode15s,bvp4c
等函数,部分输入需要为函数句柄,即@fun
的形式,但是经常会出现“参数输入过多”或者“参数输入不足的问题”,主要原因是在于MATLAB自带的函数传递参数机制和规定的问题。
如果在函数输入较为简单的情况下,函数只有一个输入,为function y = fun(x)
的形式,此时,可以直接写为@fun
的形式,不会报错。
但是有些情况下,调用的函数(即前文提到的函数句柄)输入量较多,如下形式function y = fun(t,x,a,b)
,此时被调用不能写为@fun
的形式,否则会报错,因为fun
函数需要的参数没有输入。此时有两种方式解决此问题,第一种是将函数句柄写为@(t,x) fun(t,x,a,b)
的形式,表明t,x
是不用输入的参数;第二种是写为MATLABFun(@fun,a,b)
的形式,来将参数a,b
传入函数fun
中。
第一种方式称为匿名函数(anonymous functions)方法,第二种方式称为通过尾参数(trailing arguments)传递参数的方式。建议使用第一种方式,因为有一些较新的函数(比如说bvp5c
)不支持使用尾参数传递的形式。
参考自MATLAB社区问答
When using ODE45 (or similar functions), what is the benefit of using anonymous functions over passing additional parameters as trailing arguments?
最后
以上就是个性大树为你收集整理的MATLAB函数输入的参数过多和缺少参数输入问题的全部内容,希望文章能够帮你解决MATLAB函数输入的参数过多和缺少参数输入问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复