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