概述
通过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
最后
以上就是敏感寒风为你收集整理的c#向MATLAB传递字符串数组的全部内容,希望文章能够帮你解决c#向MATLAB传递字符串数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复