C#MLApp Feval变量参数数

C#MLApp Feval变量参数数,c#,matlab,reflection,com,C#,Matlab,Reflection,Com,我正在使用COM组件从c#应用程序运行Matlab代码 在此范围内,我使用Feval函数,其形式如下: matlab.Feval("MatlabFunction", 1, out result, param1, param2...., paramN); 像这样传入参数不是很理想,因为我希望有一个函数matlabExecutor,它可以运行任何函数,但由于Feval接受参数的方式,似乎每个Matlab函数都需要一个包装函数 注意:是的,我可以将数组作为参数传递,但这意味着要更改我不想特别做的所有

我正在使用COM组件从c#应用程序运行Matlab代码

在此范围内,我使用Feval函数,其形式如下:

matlab.Feval("MatlabFunction", 1, out result, param1, param2...., paramN);
像这样传入参数不是很理想,因为我希望有一个函数matlabExecutor,它可以运行任何函数,但由于Feval接受参数的方式,似乎每个Matlab函数都需要一个包装函数

注意:是的,我可以将数组作为参数传递,但这意味着要更改我不想特别做的所有Matlab脚本


我很快就给出了反射,但似乎无法解决如何将其用于COM对象。

我不太明白您想做什么,但这里有另一种无需包装即可传递参数的方法,使用
单元格。它适用于常规的matlab函数,我不确定它是否适用于您的情况

params = {param1,param2,...paramN};
% works with plot
plot(params{:});

% just a guess, it might works
matlab.Feval("MatlabFunction", 1, out result, params{:});

我想在C#net中这样做,如果我像你做的那样,它只会将整个单元格数组作为第一个输入参数传递。我想问题在于Feval matlab函数采用多个参数,不能采用数组。实际上在matlab中,当我将参数作为单元格数组传递时,对于任何Matlab函数,每个单元都是一个输入参数。这与matlab中使用的
varargin
非常相似(它也是一个单元数组)。我真的不理解你的问题(我对COM.NET一无所知),所以我不能进一步帮助你。但我认为这条信息可能会有所帮助。是的,你是正确的,但如果你尝试使用Feval解决方案,它不起作用,它将整个单元格数组作为一个参数:嗯,我尝试了一个使用
Feval('plot',params{:})的示例并且它可以工作