[問題] function 裡的eval 產生的變數如何傳值已回收

看板MATLAB作者 (KillerQueen)時間14年前 (2010/08/26 09:52), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
大概的想法是,寫一個function 然後傳回六個變數並每個都含有各自的值 h = 1:6; function needvariable(h) for i = 1:length(h) eval(['h' num2str(i) ' = i ']) end 希望回傳的是 h1 = 1 h2 = 2 ...... h6 = 6 該怎麼用…因為function需要有固定值才能傳值回來 變數會跟著h的長度改變。 謝謝 摸了兩天,總算了解到一點點 希望對往後有相同問題的人可以幫到忙 h = 1:6; function varargout = ttt(h) nout = max(nargout,1)-1; for i=1:length(h) eval(['a' num2str(i) '= i;']); eval(['varargout(' num2str(i) ') = {a' num2str(i) '};']); end 使用一個叫varargout的指令來完成。 外部指令就打 [a b c d e f ]=ttt(h); %這樣就可以得到六個值 %想要少一點五個也是可以跑值的。 %所以想要多少變數就在外層用eval跑變數 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 109.246.225.213 ※ 編輯: world210 來自: 109.246.225.213 (08/27 01:36)

08/27 02:52, , 1F
這樣寫法不好... 輸出的還要用deal 處理
08/27 02:52, 1F

08/27 02:53, , 2F
直接輸出成矩陣不就好了
08/27 02:53, 2F
文章代碼(AID): #1CTSZNOO (MATLAB)