您的位置:首页 > 编程语言 > MATLAB

c#向MATLAB传递字符串数组

2015-10-28 07:05 405 查看
通过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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: