matlab与C#混合编程:数据类型转换关键问题

it2022-05-05  136

目录

数据类型转换的测试例子简单的matlabHelper

数据类型转换的测试例子

using System; using System.Collections.Generic; using System.Linq; using System.Text; using MathWorks.MATLAB.NET.Arrays; //引用 MWArray.dll namespace MatlabCallCsharpDll { public class Test { public static string showMWArray( ) { double[] data = new double[] { 1.0, 2.32, 3 ,3.432,12,42}; MWArray array1 = new MWNumericArray(2, 3, data); //2行3列矩阵。 MWArray array = new MWNumericArray(data); //得到matlab的数据类型矩阵,是基类。只有tostring和toarray方法 MWNumericArray tempArr = (MWNumericArray)array; //得到matlab与C#中间类型。继承于MWArray。有 Array CSArr = tempArr.ToArray(); //中间类型数组不能直接转换成cs具体类型的数组,如int[]等。 double num = tempArr[1].ToScalarDouble(); double[,] doubleArr = (double[,])CSArr; //cs数据类型的强制转换。 num = doubleArr[0,0]; //2.32 等价于 num = tempArr[1].ToScalarDouble(); return num.ToString(); } } }

简单的matlabHelper

依据上面的测试例子,将常用的matlab数据类型转化成C#数据类型方法封装为单独的help类,以便开发人员直接调用该help类。而不用知道matlab相关知识。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using MathWorks.MATLAB.NET.Arrays; namespace MatlabCallCsharpDll.wordHelper { public class WordHelper { /// <summary> /// 将matlab数组矩阵转换成双精度小数数组 /// </summary> /// <param name="matrix">将matlab数组矩阵,如 outMatrix=[1.75,2.68,3.36;4,5.35,6.23];</param> /// <returns>成功:双精度小数数组,错误:null</returns> public static double[,] matrix2DoubleArray(MWArray matrix) { if (matrix!=null) { MWNumericArray tempArray = (MWNumericArray)matrix; double[,] res = (double[,])tempArray.ToArray(); return res; } else { return null; } } /// <summary> /// 将matlab数组矩阵转换成整数数组 /// </summary> /// <param name="matrix">matlab数组矩阵</param> /// <returns>成功:整数数组,失败:null</returns> public static int[,] matrix2IntArray(MWArray matrix) { if (matrix!=null) { MWNumericArray tempArray = (MWNumericArray)matrix; int[,] res = (int[,])tempArray.ToArray(); return res; } else { return null; } } /// <summary> /// matlab字符串矩阵转换成C#字符串 /// </summary> /// <param name="matlabStr">matlab字符串矩阵,如 outString = 'zhang_yang';</param> /// <returns>成功:str;失败:null</returns> public static string MatlabStr2csStr(MWArray matlabStr) { if (matlabStr!=null) { MWCharArray arr = (MWCharArray)matlabStr; string str = arr.ToString(); return str; } else { return null; } } } }

最新回复(0)