【问题标题】:call matlab function in C#在 C# 中调用 matlab 函数
【发布时间】:2015-04-08 03:05:33
【问题描述】:

我想在我的 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();

有什么想法可以帮到我吗?

非常感谢

【问题讨论】:

  • “什么都不做”是什么意思?至少两个Console.WriteLine 应该打印出任何内容,否则代码会以异常退出。
  • 它什么也不打印,没有例外..

标签: c# matlab


【解决方案1】:

问题不在于 MLApp 或其任何功能。问题是你的第五行:

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

使用此代码,sol 将是一个空对象。相反,请使用以下代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多