我正在尝试使用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);
1条答案
按热度按时间gajydyqb1#
您正在将
Class1.FromMatLab(a, b, c);
的结果赋给object
类型的变量,该变量没有X
或Y
属性。如果将object data
更改为Data data
或var data
,编译器错误应该会消失。