
,那输入参数就有面粉、酵母、鸡蛋、水等
,而输出参数就是香喷喷的面包
,只要输入面粉、酵母、鸡蛋、水等,经过面包房加工处理,就能得到香喷喷的面包。这相当于 多个输入一个输出 ,函数还可以是 一个输入多个输出 、 多个输入多个输出 、 零个输入零个输出 、 零个输入一个或多个输出 ,说白了就是函数既可有输入也可无输入,既可有输出也可无输出。 那么问题来了?既然函数的参数这般多变,要怎么定义才能尽可能做到万花丛中一枝独秀呢
?即函数本身具备 自适应输入输出参数个数 的功能。 接下来就一起来揭开6个小矮人的神秘面纱吧
! 为了能让更加自由地自定义函数,matlab提供6有关自定义函数输入输出参数检查的命令,分别是: varargin 、 varargout 、 nargin 、 nargout 、 narginchk 、 nargoutchk ,对应函数功能见下表:| 函数名称 | 函数功能 |
|---|---|
| varargin | 可变长度输入参数列表,传递函数输入参数 |
| varargout | 可变长度输出参数列表,传递函数输出参数 |
| nargin | 获取函数输入参数数目 |
| nargout | 获取函数输出参数数目 |
| narginchk | 验证输入参数数目 |
| nargoutchk | 验证输出参数数目 |
。那它们的技能要怎样才能施展呢?别着急,让小编先喝口水吧。 1秒,2秒,3秒,。。。。。。人呢? 好了,喝完了~~~真舒服~~~继续吧!先来说道输入三公子de(varargin、nargin、narginchk)吧: varargin: 我很容易满足的,随便给个位置啰! 示例:函数fun(x,y, varargin ),小蓝人就是我,你们装不下的全给我! nargin: 小蓝人 知多少,快把我来问
示例: nargin( 小蓝人 的数目 在我肚子里面呢,你倒是来取呀,等啥呢); nargin( fun ),fun一点儿都不好玩,不玩了
narginchk: 哎! 哎! 哎! 楼上那两位不要太矫情了,检查官来了,小心哦
示例:narginchk( minArgs , maxArgs ) minArgs: 比我小的不让过,除非。 。 。 。 。 。 maxArgs: 比我大的也不让过,除非。。。。。。 小编:非你个大头鬼呀,赶紧让我过去写推文吧!再看输出三公子(varargout、nargout、nargoutchk)吧: varargout: 楼上三位话真多,没有干货
,还是看我的吧!function [varargout] = meanSumStd(x) % 感谢关注matlab爱好者 % 返回平均值 varargout{1} = mean(x); % 返回求和值 varargout{2} = sum(x); % 返回标准差 varargout{3} = std(x);endnargout : 立正! 稍息! 注意保持队形!function [avg,varargout] = meanSumStd(x)% 感谢关注matlab爱好者% 返回平均值varargout = cell(nargout,1);avg = mean(x);for k = 1:nargout-1 switch k case 1 % 返回求和 varargout{k} = sum(x); case 2 % 返回标准差 varargout{k} = std(x); endendendnargoutchk:matlab爱好者的关注者们,大家好,我是out检查官,请出示您的关注通行证!不然的话。。。。。。
示例:nargoutchk(minArgs,maxArgs),
minArgs:比我大的都比小编帅!
maxArgs:比我小的都比小编高!
小编:好吧,我承认!
function [avg,varargout] = meanSumStdVar(x)minArgs=2; maxArgs=4;nargoutchk(minArgs,maxArgs)varargout = cell(nargout,1);avg = mean(x);for k = 1:nargout-1 switch k case 1 % 求和 varargout{k} = sum(x); case 2 % 计算标准差 varargout{k} = std(x); case 3 % 计算方差 varargout{k} = var(x); endendend
narginchk: 5 —— 我是检查输入参数个数的!
nargoutchk: 6 —— 我是检查输出参数个数的! 小编: 好! 全体都有! 立正! 稍息! 解散! 闲言碎语扯了这么多,大家都了解这六个小矮人的用法了吗?不妨赶紧打开matlab试试这些函数吧,合理组合利用这6个函数,你编写的函数必将健步如飞!如果大家对这6个函数使用有任何疑问,欢迎给小编留言! 感谢您的阅读
!参考资料:
[1] https://www.mathworks.com/help/matlab/ref/varargout.html [2] https://www.mathworks.com/help/matlab/ref/varargin.html [3] https://www.mathworks.com/help/matlab/ref/nargin.html [4] https://www.mathworks.com/help/matlab/ref/nargout.html [5] https://www.mathworks.com/help/matlab/ref/narginchk.html [6] https://www.mathworks.com/help/matlab/ref/nargoutchk.html封面图片:由 Comfreak在Pixabay上发布
往期回顾>>>matlab版的origin呼之欲出,快来领取吧!
酥脆可口的萝莉音来了~~~
PlotPub!一款让你欲罢不能的科研绘图工具箱
对matlab来说,“is”不仅仅是个英文单词!
代码共享
欢迎各位小伙伴加入原创代码共享QQ群,把您的原创代码与他人分享、同时也学习他人的优秀代码!在公众号中回复“共享”或“原创”即可获取加入方式哦!




在看 点这里
