2015-10-02 143 views
0

我正在使用COM組件來從c#app運行Matlab代碼。C#MLApp Feval變量參數數

在此我使用它具有以下形式Feval功能:

matlab.Feval("MatlabFunction", 1, out result, param1, param2...., paramN); 

已通過在這樣的參數不是很理想,因爲我想有一個功能matlabExecutor它可以運行任何函數,但由於Feval在參數中採用的方式,它看起來好像我將需要每個Matlab函數都有一個包裝函數。

注意:是的,我可以傳入一個數組作爲參數,但這意味着要更改我不想特意做的所有Matlab腳本。

我已經給了反射一個快速去,但似乎無法解決如何與COM對象一起使用它。

回答

0

我真的不明白你想做什麼,但這裏有另一種方法來傳遞參數而不需要包裝,使用cell。它適用於常規的matlab函數,我不確定它是否適用於您的情況。

params = {param1,param2,...paramN}; 
% works with plot 
plot(params{:}); 

% just a guess, it might works 
matlab.Feval("MatlabFunction", 1, out result, params{:}); 
+0

我想在C#.net中做到這一點,如果我做了你所做的事情,它只是傳遞整個單元數組作爲第一個輸入參數。 –

+0

我想這個問題是使用Feval matlab函數,它需要多個參數,而不能取而代之。 –

+0

實際上,在Matlab中,當我將params作爲單元數組傳遞時,每個單元格都將是用於任何Matlab函數的一個輸入參數。這與在matlab中使用'varargin'非常相似(這也是一個單元陣列)。我真的不明白你的問題(即時通訊,.NET無能爲力),所以我不能進一步幫助你。但我認爲這條信息可能會有所幫助。 – MinF