mwArray与C++接口
1.Matlab調用C++:http://blog.csdn.net/zouxy09/article/details/20553007
摘錄下效果圖:
2.mwArray類操作:http://blog.sina.com.cn/s/blog_9460ff790101fujz.html
2.1.?復數數組的初始化(由C到matlab)
????double?rdata[4]?=?{1.0,?2.0,?3.0,?4.0};
????double?idata[4]?=?{10.0,?20.0,?30.0,?40.0};
????mwArray?a(2,?2,?mxDOUBLE_CLASS,?mxCOMPLEX);
????a.Real().SetData(rdata,?4);
????a.Imag().SetData(idata,?4);
???對應從mwArray中獲取元素
????a.Real().GetData(buffer,len);
????a.Imag().GetData(buffer,len);
2.2.?cell元組陣列的獲取
????由于mwArray索引運算符()直接返回mwArray類型,因此可以直接聲明通過索引獲取元組內的矩陣值。
????eg:?a={[1],[2],[1?2;3?4];[1?3;2?4],[1],[2]};
????mwArray?b=a(2);?//b=[1?3;2?4];
????mwArray?c=a(5);?//c=[1?2;3?4];
????PS:mwArray中數組為按列排,因此[1?3;2?4]的索引號為2
2.3.?mwArray成員函數使用
????int?NumberOfDimensions????????返回矩陣維數
????int?NumberOfElements????????????返回矩陣元素個數
????mwArray?GetDimensions?????????返回一維矩陣,表示矩陣各維大小
????bool?IsComplex????????????????????????判斷是否復數矩陣
????PS:使用GetData前可先使用NumberOfElements確定元素個數,避免越界。
2.4.?字符串轉換為mwArray
????char?str[]="inFile.mat";
????mwArray?inFile(str);
????則inFile則可以直接作為函數的輸入參數進行傳遞。
更詳細的說明見:http://blog.sina.com.cn/s/blog_b3facf740101e3c7.html
intNumberOfFields() const 返回結構體域個數
intElementSize() const 返回mwArray陣列元素大小
intCompareTo(const mwArray& arr)const對比兩個mwArray陣列
boolIsSparse()const 判斷是否Sparse陣列
boolIsNumeric()const 判斷是否是數值陣列
boolIsEmpty()const 判斷是否是空陣列
boolIsComplex()const 判斷是否復型陣列
boolEquals(const mwArray& arr)const 判斷兩個陣列是否相同
3.我使用的代碼
//輸入,文件名,用于載入文件
std::string SFilename;
const mwArray Filename(SFilename.c_str()); mwArray topic_numM(1,5,mxINT8_CLASS);double b[] = {5,4,3,6,8};topic_numM.SetData(b,5);
//輸出,用于獲取數組 int OutNorNum =530; int OutabNorNum =33; mwArray Normal; mwArray x_Abnorm_index; 函數.................................... double* Ptrue = new double[OutNorNum]; int* Indexfalse= new int [OutabNorNum]; double* Pfalse = new double[OutNorNum]; Normal.GetData(Ptrue,OutNorNum);//此句 導致程序崩潰!越界 x_Abnorm_index.GetData(Indexfalse,OutabNorNum);//此句 導致程序崩潰!超出下標
總結
以上是生活随笔為你收集整理的mwArray与C++接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用QT的一些小Tipster
- 下一篇: 口袋妖怪剑盾能用精灵球手柄吗