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
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
相关文章推荐
- matlab绘制带有吴茶邦(error)的分组柱状图
- 使用matlab读取excel数据并保存
- Matlab boxplot for Multiple Groups(多组数据的箱线图)
- 使用matlab画不同填充图案的柱状图
- Matlab梯度下降及正规方程实现多变量的线性回归
- Matlab数值计算
- matlab的.dat文件读取
- 我的文件夹下面有汉字的路径,matlab 不识别
- papa的儿子 matlab plot3 color peaks
- 归并排序算法Matlab实现
- 【kate总结】matlab调用opencv出错总结
- 11.16 Matlab 生成可执行文件
- 径向基(matlab工具箱)
- matlab中的containers.Map()
- Matlab 函数记录本
- matlab学习
- 在VC6中调试MEX文件
- 图像拼接(不投影到柱面)(渐入渐出融合) matlab程序
- MATLAB global的用法
- Python 机器学习——线性代数和矩阵运算:从matlab迁移到python