我想在我的C#项目中调用matlab函数。 这是我的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 :(得分:0)
问题不在于MLApp或其任何功能。问题是你的第五行:
List<double> sol = result as List<double>;
使用此代码,sol将是一个null对象。相反,请使用以下代码:
List<Double> sol = (result as Array).Cast<Double>().ToList();