前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这6个命令助你玩转matlab自定义函数

这6个命令助你玩转matlab自定义函数

作者头像
巴山学长
发布2019-11-01 09:01:45
7680
发布2019-11-01 09:01:45
举报
文章被收录于专栏:巴山学长

函数对于matlab的重要性这里就不在赘述了(你了解matlab局部函数吗?)。matlab自带的函数虽包罗万象、但并不可能揽括一切,在实际编程过程中往往还需要编程者根据实际问题编写适合解决当下问题的函数,这也就是所谓的自定义函数

对于函数来说,几个参数指标是不可忽视的,包括函数的输入接口输出接口输入参数及其个数输出参数及其个数,我们希望通过输入某些参数经过自定义函数的处理来获取我们想要的数据结果。为了方便大家更深刻地理解函数的概念,这里做一个形象的比喻,把面包房看作是函数

,那输入参数就有面粉、酵母、鸡蛋、水等

,而输出参数就是香喷喷的面包

,只要输入面粉、酵母、鸡蛋、水等,经过面包房加工处理,就能得到香喷喷的面包。这相当于多个输入一个输出,函数还可以是一个输入多个输出多个输入多个输出零个输入零个输出零个输入一个或多个输出,说白了就是函数既可有输入也可无输入,既可有输出也可无输出。

那么问题来了?既然函数的参数这般多变,要怎么定义才能尽可能做到万花丛中一枝独秀呢

?即函数本身具备自适应输入输出参数个数的功能。

接下来就一起来揭开6个小矮人的神秘面纱吧

为了能让更加自由地自定义函数,matlab提供6有关自定义函数输入输出参数检查的命令,分别是:vararginvarargoutnarginnargoutnarginchknargoutchk,对应函数功能见下表:

函数名称

函数功能

varargin

可变长度输入参数列表,传递函数输入参数

varargout

可变长度输出参数列表,传递函数输出参数

nargin

获取函数输入参数数目

nargout

获取函数输出参数数目

narginchk

验证输入参数数目

nargoutchk

验证输出参数数目

肿么样?这个六个小矮人个个身怀绝技吧,不亚于金庸先生的桃谷六仙呐

。那它们的技能要怎样才能施展呢?别着急,让小编先喝口水吧。

1秒,2秒,3秒,。。。。。。人呢?

好了,喝完了~~~真舒服~~~继续吧!

先来说道输入三公子de(vararginnarginnarginchk)吧:

varargin我很容易满足的,随便给个位置啰!

示例:函数fun(x,y,varargin),小蓝人就是我,你们装不下的全给我!

nargin小蓝人知多少,快把我来问

示例:nargin(小蓝人的数目在我肚子里面呢,你倒是来取呀,等啥呢);nargin(fun),fun一点儿都不好玩,不玩了

narginchk哎!哎!哎!楼上那两位不要太矫情了,检查官来了,小心哦

示例:narginchk(minArgs,maxArgs)

minArgs比我小的不让过,除非。。。。。。

maxArgs比我大的也不让过,除非。。。。。。

小编:非你个大头鬼呀,赶紧让我过去写推文吧!


再看输出三公子(varargoutnargoutnargoutchk)吧:

varargout楼上三位话真多,没有干货

,还是看我的吧!

代码语言:javascript
复制
function [varargout] = meanSumStd(x)    % 感谢关注matlab爱好者    % 返回平均值    varargout{1} = mean(x);    % 返回求和值    varargout{2} = sum(x);     % 返回标准差    varargout{3} = std(x);end

nargout立正!稍息!注意保持队形!

代码语言:javascript
复制
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);    endendend

nargoutchk:matlab爱好者的关注者们,大家好,我是out检查官请出示您的关注通行证!不然的话。。。。。。

示例:nargoutchk(minArgs,maxArgs),

minArgs比我大的都比小编帅

maxArgs比我小的都比小编高

小编:好吧,我承认!

代码语言:javascript
复制
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

小编:集合!集合!集合了!~~~立正!报数!

varargin: 1 —— 我是传递输入参数的!

varargout: 2 —— 我是传递输出参数的!

nargin: 3 —— 我是点输入参数个数的!

nargout: 4 —— 我是点输出参数个数的!

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上发布

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档