c#调用Matlab的参数传递

c#调用matlab函数时,需要将C#数据类型转换成Matlab数据类型。
此时,需要引用MWArray.dll文件。该程序集包含了与Matlab数据交换的类。其中,MWArray类及每个派生类提供创建和访问 MATLAB 数据类型的方法。
所有类都派生自抽象的 MWArray 类和每个派生类,映射到 MATLAB 数据类型。但同样是抽象的 MWIndexArray 除外。

C#类 对应Matlab类型
MWNumericArray 数值数组 使用此类将c# 数值数组(如int[] )转Matlab数值数组
MWLogicalArray bool数组
MWCharArray 字符数组 c#字符串对应Matlab的一个字符数组
MWStructArray 结构数组 c#对象
MWCellArray 元组数组 c#泛型集合

Matlab函数如下:

function [code,msg] = Test(inta,strp)
 
 % box=[minx,maxx,miny,maxy,minz,maxz ] 
 %inta = [1,2,3 ]; %数组
 
 %strp = {'Mercury','Gemini','Apollo','Skylab','Skylab B','ISS'}; %元组
 
  %strp2 = { {'Mercury',30},{'Gemini',40},{'Apollo',0}}; %元组
 size(strp); % 1行6列
 fid=fopen('out.txt','wt');
 fprintf(fid,'%s\n',strp{1,2});
 code = size(inta);
 fprintf(fid,'%g\n',inta(1,2));
 msg = 'yesy';

 fclose(fid);
 return 
end

其中
c#代码如下

public int Test(List<double> box, List<string> pathName)
        {
            MatlabV4.Class1 clazz = new MatlabV4.Class1();

            MWNumericArray mw_sigma = new MWNumericArray(box.ToArray());
            // 
            MWCellArray cellArray = new MWCellArray(1,pathName.Count);
            //  MWNumericArray numericArray = new MWNumericArray();

            for (int i = 1; i < pathName.Count + 1; i++)
            {
                cellArray[1,i] = ((MWCharArray)pathName[i - 1]);
                cellArray[1, i] = ((MWCharArray)pathName[i - 1]);
            }

          var ret=  clazz.Test(mw_sigma,cellArray);  //返回一个MWArray类型的变量
            MWNumericArray arr = (MWNumericArray)ret;
            return Convert.ToInt32(arr[1,1].ToScalarInteger());
             
        }
发布了30 篇原创文章 · 获赞 4 · 访问量 7455

猜你喜欢

转载自blog.csdn.net/guo1wu3shi4/article/details/105039306