2015-02-08 54 views
1

我想在我的C#項目中調用matlab函數。 這裏是我的MATLAB函數:在C#中調用matlab函數

function [A,B] = estiamteBetaDistAlpha(mu,sigmasq) 

syms x 
a = sprintf('x*((x/%f)-x) = %f *(x+1+((x/%f)-x))*((x+((x/%f)-x))^2)^2 ',mu,sigmasq,mu,mu); 

aa = double(solve (a)); 
sel = find(aa>0); 
pot= aa(sel); 

B = pot(1) * (1/mu - 1); 
A = pot(1); 

它求解方程,並給予公正的正解。 我沒有找到類似於C#的東西,所以我想在我的C#代碼中調用它以獲得相同的結果。

,我覺得這種方式在互聯網,但它什麼都不做:

MLApp.MLApp matlab = new MLApp.MLApp(); 
      matlab.Execute(@"cd C:\Work\Predictor Material\PredictionAlgorithm\code\predictor\helper"); 
      object result = null; 
      matlab.Feval("estiamteBetaDistAlpha", 2, out result,0.024, -0.002); 
      List<double> sol = result as List<double>; 
      Console.WriteLine(sol[0]); 
      Console.WriteLine(sol[1]); 
      Console.ReadLine(); 

任何想法,以幫助我嗎?

非常感謝

+0

什麼是「什麼都不做」是什麼意思?至少兩個'Console.WriteLine'應該輸出任何東西,或者代碼退出時會出現異常。 – Daniel 2015-02-08 10:01:07

+0

它打印什麼都沒有例外.. – WakTrain 2015-02-09 10:43:50

回答

0

問題不在於MLApp或其任何功能。問題是你的第五行:

List<double> sol = result as List<double>; 

有了這段代碼,sol會是一個空對象。相反,使用此代碼:

List<Double> sol = (result as Array).Cast<Double>().ToList();