c#向MATLAB传递字符串数组

通过MATLAB编写功能函数,编译成.dll,供C#中调用。由于在MATLAB中编译的函数中暴露出的参数中是多个文件的物理路径(即字符串数组做参数)。而在C#中获取的文件物理路径也是通过String字符串数组存起来的,而MATLAB中一般是通过MWCellArray存放的。所以两者存在一个转化,现将本人经验总结如下,供各位看官参考。

 

C#中:

 

String[] infilesPath = new String[10];

           String outPath = "C:\\Users\\***\\Desktop\\回归分析\\testData";

           infilesPath[0] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[1] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[2] = "G:\\NDVI\\NDVI\\2000-02.tif";

            infilesPath[3] ="G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[4] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[5] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[6] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[7] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[8] = "G:\\NDVI\\NDVI\\2000-02.tif";

           infilesPath[9] = "G:\\NDVI\\NDVI\\2000-02.tif";

 

           //以上为示例数据,通过String存起来

 

           MWCellArray cellArray = new MWCellArray(1, infilesPath.Length);

           for (int i = 0; i < infilesPath.Length; i++)

           {

                cellArray[1, i + 1] =infilesPath[i];

                //此处一定要注意,MWCellArray作为MATLAB中的数组,下标从1开始,infilesPath为C#中的字符串数组,下标从0开始。

           }

 

           MWCharArray outPath1 = new MWCharArray(); outPath1 = outPath;

           int InPathLen = infilesPath.Length;

           MWNumericArray InPathLen1 = new MWNumericArray();

           InPathLen1 = InPathLen;

 

           //RegAnalysisClass为MATLAB中编写的类,ReAnalysis方法是实现特定功能函数,共有三个参数,字符串长度,cell数组,输出文件路径

 

           RegAnalysisClass RegAnalysisClassObject = new RegAnalysisClass();

           RegAnalysisClassObject.ReAnalysis(InPathLen1, cellArray, outPath1);

 

MATLAB中:(只摆一部分)

 

function ReAnalysis(InPathArrayLen,InPathArray,outPath)

 

%读取文件目录下的所有输入影像路径

for i=1:InPathArrayLen

   ppp=InPathArray{1,i};

   [indexData(:,:,i), R,info] =GetGeoTiff(ppp);

end

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值