2012-07-16 64 views
1

給定一個多輸入MATLAB函數MATLAB嵌套多輸入功能

out=f(in1, in2) 

我想寫的第二函數g,其生成對於f,例如輸入

[in1, in2]=g(in) 

,這樣我可以調用類似:

out=f(g(in)) 

我試圖寫克作爲存儲IN1和IN2中的單元陣列的單個輸出的功能,這樣我可以供給的輸出克至F使用冒號運算符:

in_c=g(in); 
out=f(in_c{:}) 

,但我一直在尋找一個在線的解決方案,這似乎是不可能的,因爲我讀了實現這種方式:

Is it possible to apply colon operator on an expression in MATLAB?

有沒有其他方法可以做到這一點?

+0

這在Matlab中不可行。你可以做的最好的事情是讓'f'把一個單元格數組作爲輸入,'g'返回一個單元數組作爲輸出。 – 2012-07-16 12:53:23

+0

可能重複的[Matlab ---拼接向量爲函數調用的參數](http://stackoverflow.com/questions/11461963/matlab-splice-vector-into-arguments-for-function-call) – Jonas 2012-07-16 13:01:50

回答

0

As discussed recently,這在Matlab中是不可能的。

但是,如果你不想重新寫你的函數g(x,y)返回一個單元陣列,你仍然可以做的一切在兩行:

[in4f{1}, in4f{2}] = g(in); 
out = f(in4f{:}); 

順便說一句:除非你真的很痛苦對於內存而言,通過避免臨時變量嘗試強制使用單行語句並沒有多大意義。當然,你可以讓你的代碼看起來像CrazyPerl,但從長遠來看,你會爲增加可讀性而感到高興。

+0

一般你不會既不會臨時創建內存,也不會臨時創建臨時對象。 – tmpearce 2012-07-16 13:53:36