2013-10-09 41 views
4

想象一個帶有可變數量輸入參數的函數,交替地詢問一個字符串和一個值。單元格作爲逗號分隔可變參數函數的輸入參數

myfunction('string1',value1,'string2',value2,...) 

例如,

myfunction('A',5,'B',10) 

我想繼續調用這樣的功能的能力,我不想改變函數內的varargin評價。 (除('string1','string2',...,value1,value2,...)是否有幫助)

但我也有我的輸入字符串和值存儲在單元陣列inputvar <4x1 cell>

inputvar = 

'A' [5] 'B' [10] 

同樣在此單元陣列具有一個可變的長度。

我的目的是要以某種方式實現我的功能如下:

myfunction(inputvar) 

這顯然是行不通的。任何想法如何我可以將我的單元格轉換爲有效的輸入語法?


我已經嘗試來生成諸如

''string1',value1,'string2',value2' 

一個字符串,並使用eval在函數調用中使用它。但它沒有解決。或者,有沒有辦法將字符串轉換爲代碼?

回答

6

你應該能夠做到這一點是這樣的:

myfunction(inputvar{:}) 

{:}創建一個comma separated list


編輯: 例如:

function val = myfunction(string1,value1,string2,value2) 
    if string1 == 'A' 
     val = value1; 
    else 
     val = value2; 
end 

myfunction('A',5,'B',10) 
myfunction('B',5,'B',10) 
A = {'A',5,'B',10}; 
myfunction(A{:}) 
A = {'B',5,'B',10}; 
myfunction(A{:}) 

回報:

ans = 5 
ans = 10 
ans = 5 
ans = 10 
+0

...這使我得到的問題,我得到的字符'A'而不是字符串''A''。我敢肯定,我可以自己找到解決方案,但我會很感激任何快速的想法;) – thewaywewalk

+0

@thewaywewalk我不確定你的意思,它適用於我剛剛添加的示例? – Dan

+0

我失去了概述我的錯誤是什麼,但它終於工作。謝謝! – thewaywewalk

相關問題