MATLAB 板


LINE

※ 引述《johnny4003 (股市巨量下跌)》之铭言: : 各位大大~ : 我在撰写的时候需要用到nargin&nargout, : 但是在Help看不出要怎麽用? : 谢谢~ : function [x0, y0] = myplot(x, y, npts, angle, subdiv) : % MYPLOT Plot a function. : % MYPLOT(x, y, npts, angle, subdiv) : % The first two input arguments are : % required; the other three have default values. : ... : if nargin < 5, subdiv = 20; end : if nargin < 4, angle = 10; end : if nargin < 3, npts = 25; end : ... : if nargout == 0 : plot(x, y) : else : x0 = x; : y0 = y; : end nargin和nargout在比较大型的函式里会用到(toolbox应该几乎都有) 举例来说 有个函式一开始对於输入与输出的设定是长这样子 function [ A B C D ] = myfun( a , b , c , d ) 我们要使用myfun这个函式的话 多半都是直接用[ A B C D ] = myfun( a , b , c , d )即可 但事实上,可以使用nargin和nargout来做很多变化 像是我们输入可以这样来写myfun( a , b )(输出的部份稍後讲,这里先讲输入) 只输入a和b,但是c和d没有输入,运算时会需要用到怎麽办? 这时候可以使用nargin来帮c和d做一个像是预设值的动作 如果我们输入里有c和d,那麽後面运算就用我们输入的c和d来运算 如果我们输入里没有c和d,那麽後面的运算就使用函式内建的预设值来运算 而判断的方法就是使用nargin nargin可以判断你输入了几个变数进函式来 以前面的例子,只输入a和b的话,nargin就会等於2 所以我们只需要在程式一开始加点判断式来给预设值即可 if nargin == 3 % (假设输入abc而没有输入d) d = 某数预设值 ; elseif nargin == 2 % (假设输入ab而没有输入cd) d = 某数预设值 ; c = 某数预设值 ; end 使用这个方法可以省掉一些麻烦,像是某些迭代需要输入的停止条件ε 当此次iteration的运算结果与上一次iteration运算结果差异小於ε时运算结束 我们可以每次都输入个ε让程式用 但如果觉得这样每次都输入很麻烦的话 我们也可以利用nargin来给预设值 不想输入ε的话就不要输入 判断式检查nargin发现少一个输入的话,自动给个预设的ε就好 而nargout的话与nargin很类似,是判断输出有几个用的 像是前面的例子 我们使用函式时也可以写[ A B ] = myfun( a , b , c , d ) 这样的话nargout的值为2 会需要用到nargout是因为有些资讯如果觉得不是那麽必要的话 可以使用nargout来判断需不需要为那些不很必要的资讯做运算 上面的写法输出只有A和B,C和D可能是在这次使用没有需要要看的资讯 那就使用nargout来判断输出只要有两个 C和D就不要做运算了,来节省些时间 nargin和nargout的用法大致是这样 总之就是来判断这次要使用该函式时有输入的多少个变数,以及需要输出多少个变数 -- Deserves death! I daresay he does. Many that live deserve death. And some die that deserve life. Can you give that to them? Then be not too eager to deal out death in the name of justice, fearing for your own safty. Even the wise cannot see all ends. Gandalf to Frodo --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.25.235
1F:推 Ysen:这个要M一下@@,G大真是强.. 04/11 12:40
2F:推 KevinT:详细 推!! 04/11 14:28
3F:推 cute1888:推 我搞懂了ㄟ!! 04/11 17:06
4F:推 oct:nargin & nargout用法书上倒是还找得到,但是说到varargin和 04/11 17:28
5F:→ oct:varargout, 书上似乎都没有很明确的使用方法 04/11 17:29
6F:→ oct:只大略知道这两个用在不确定输入输出的情况 04/11 17:29
7F:→ oct:但是如果只是这样的功能,不是用 nargin & nargout就可以达成 04/11 17:30
8F:→ oct:了吗? 04/11 17:30
9F:推 bylankai:nargin和nangout就是指varargin和varargout的个数啊 04/11 17:53
10F:→ bylankai:前者用来判断 後者用来给这个function输入和输出参数 04/11 17:56
11F:推 CDavid:有看有推 08/30 16:16







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP