C# Matlab資料型別轉化
注意:1,C#呼叫matlab生成的dll中的函式時,入口引數只能是MWArray型別(Matlab中的資料型別)或者MWNumericArray型別(Matlab和C#的中間型別)(通過MWNumericArray型別可以點出許多轉換函式)
2,可以將字面值直接賦給MWArray或MWNumericArray型別的變數
3,可以C#的變數將強制型別轉化為MWArray型別或MWNumericArray型別(通過MWNumericArray())。
轉換:
一, C#資料型別到M型別(C#資料不是陣列)
1, 直接將值傳遞給已經初始化的MWArray陣列中的成員(將字面值直接賦給MWArray或MWNumericArray型別的變數)
2, 直接將資料型別賦值給已經初始化的MWNumericArray變數(可以C#的變數將強制型別轉化為MWArray型別或MWNumericArray型別(通過MWNumericArray())。)
3, 直接將字串類賦值給已經初始化的MWCharArray變數
二, 如果是陣列型別:
直接賦值給MWNumericArray變數(或強制型別轉換)
總之,MWArray是總型別,其它的以MW開頭,以Array結尾的變數型別都可以直接對它進行賦值或取值。
M型別到C++/C#資料型別
先將輸出引數強制轉化為MWNumericArray型別(MWNumericArray()),再呼叫各種轉化函式。(MWArray只有.ToString()和.ToArray()兩種方法)
1,public ArrayToArray(MWArrayComponent component); (有MWArrayComponent.Real和MWArrayComponent.Imaginary兩種//相當於取資料的實數部分或虛數部分)或public Array ToArray()的方法
將M型別轉換成C#的Array型別,然後可以直接轉換成其它型別的陣列。(轉化後的結果可以再強制轉化成其它型別的陣列)(得到陣列)
2,publicoverride string ToString();
將M型別轉換成C#的字串型別;stringarror = mwArgout[2].ToString();
3,public ArrayToVector(MWArrayComponent component);(有MWArrayComponent.Real和MWArrayComponent.Imaginary兩種)
將M型別轉換成C#的Array型別,然後可以直接轉換成其它型別的向量。(得到向量,一維陣列)
4,public byteToScalarByte();
將M型別轉換成C#的位元組型別;
5,publicdouble ToScalarDouble();
將M型別轉換成C#的雙精度型別;
6,public float ToScalarFloat();
將M型別轉換成C#的單精度型別;
7,public int ToScalarInteger();
將M型別轉換成C#的整型型別;
8,public long ToScalarLong();
將M型別轉換成C#的長整C/C++/C#資料型型別;
9,public short ToScalarShort();
將M型別轉換成C#的短整型型別
double[] a = { 1, 2, 3, 4, 5,6 };//輸入引數1
MWNumericArray ma = newMWNumericArray(3, 2, a);//轉換成matlab需求的格式(將a轉為3行2兩列的陣列)
更多的資料格式轉換,請用matlab的help索引MWArray
http://cn.mathworks.com/help/dotnetbuilder/MWArrayAPI/html/57290a83-9e6e-4179-a1b8-9fb0344544ce.htm
http://www.ithao123.cn/content-10818696.html