在C#+OOP中调用MatLab函数

rqmkfv5c  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(177)

我正在尝试使用this Matlab help website中的指令从c#调用一个Matlab函数。
使用MatLab网站上的方法和示例进行得很好,但现在尝试通过编写一个单独的类来调用MatLab函数来重做所有事情,并调用Main类中的方法并给出参数值以获得结果。
这样做时,会出现重用变量的错误。
下面是调用MatLab函数的类。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace fromMatlab
{
    public class Class1
    {
        public static Data FromMatLab(double a, double b, string c)
        {
            MLApp.MLApp matlab = new MLApp.MLApp();
            matlab.Execute(@"cd c:\Users\abdhab\Documents\MATLAB");
            object result = null;
            matlab.Feval("myfunc", 2, out result, 3.14, 42.0, "world");
            object[] res = result as object[];
            object x = res[0];
            object y = res[1];
            return new Data { X = x, Y = y }; 
        }
    }
}

处理变量和构造函数的类。

namespace fromMatlab
{
    public class Data
    {
        public object X { get; set; }
        public object Y { get; set; }
    }

    public struct DataStruct
    {
        object X;
        object Y;
    }
}

主班。

using System;
using System.Collections.Generic;
using System.Text;

namespace fromMatlab
{
    class Program
    {
        static void Main(string[] args)
        {
            double a = 1;
            double b = 2;
            string c = "world";
            object data =Class1.FromMatLab(a, b, c);
            object X = data.X;
            object Y = data.Y;
            Console.WriteLine(X);
            Console.WriteLine(Y);
            Console.ReadLine();
        }
    }
}

该错误是编译器错误CS1061,它出现在以下行中。

object X = data.X;
object Y = data.Y;

MatLab函数如下:

function [x,y] = myfunc(a,b,c)
x= a+b;
y = sprintf('Hello %s',c);
gajydyqb

gajydyqb1#

您正在将Class1.FromMatLab(a, b, c);的结果赋给object类型的变量,该变量没有XY属性。如果将object data更改为Data datavar data,编译器错误应该会消失。

相关问题