mwArray
mxArray 和 mwArray 的區(qū)別
首先,mxArray是MatlabC 函數(shù)庫(kù)的結(jié)構(gòu)體,而mwArray是Matlab C++ 函數(shù)庫(kù)中對(duì)mxArray的包裝
類。
其次,二者的內(nèi)存管理方式不同。mxArray的內(nèi)存管理方式比較松散,由于是C函數(shù)庫(kù),沒有數(shù)據(jù)
封裝,必須對(duì)臨時(shí)陣列和約束陣列的概念極為明確,并且須 小心地防止內(nèi)存泄漏(要多寫好多代
碼)。盡管有自動(dòng)內(nèi)存管理機(jī)制(mlfEnterNewContext,mlfReleasePreviousContext),仍然要處處
調(diào)用mlfAssign,麻煩得很。然而mwArray就好的多,一切交給 C++對(duì)象去搞定,你只要放心地用
就可以了。不過Matlab C++函數(shù)庫(kù)為了防止頻繁內(nèi)存分配和釋放重寫了內(nèi)存分配和釋放等函數(shù)。
你會(huì)發(fā)現(xiàn)對(duì)于mwArray a,b; a=b;實(shí)際上并沒有生成兩個(gè)相同數(shù)據(jù)塊,只是指針,只有發(fā)成數(shù)據(jù)改
變時(shí)才copy完整數(shù)據(jù)。
再次,這兩個(gè)東西各自有一套與之相對(duì)應(yīng)的函數(shù)。函數(shù)的返回值類型不同,需要多加注意。
最后,用的時(shí)候mxArray要使用指針,而mwArray直接當(dāng)類對(duì)象使。如果你不是Hardcore級(jí)的牛人
或具有Hardcore傾向的潛牛人,強(qiáng)烈建議使用后者!可以把mwArray看成類似于程序語(yǔ)言中int, float等基本類型,在具體用 的過程中轉(zhuǎn)換成你想要的類型。如果從面向?qū)ο缶幊痰慕嵌葋?lái)看,mwArray其實(shí)就是所有數(shù)據(jù)類型的基類,類似于MFC中的
Object對(duì)象。在 Matlab的開發(fā)中,所有的數(shù)據(jù)對(duì)象都先當(dāng)成mwArray來(lái)看待,函數(shù)返回值也是以
mwArray類型或mwArray數(shù)組返回,在二次開發(fā)中,根據(jù) 需要轉(zhuǎn)換成需要的數(shù)據(jù)類型就可以了,
我一般做是將mwArray先轉(zhuǎn)成string,然后再將string解析成數(shù)值!
mwArray感覺如同面向?qū)ο笳Z(yǔ)言中的object類,正因?yàn)槿绱薽atlab的 變量和一般的編程語(yǔ)言不
同,它不區(qū)分ing 8h"@t,float等等。如果熟悉C#的話,對(duì)這個(gè)估計(jì)可以理解的更深。用matlab做法,
mwarray是它的基 本數(shù)據(jù)類型,單個(gè)變量和數(shù)組均適用,具體需要的時(shí)候可以轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)
類型。詳細(xì)的可以查查matlab的幫助文件,有比較詳細(xì)的說(shuō)明。
聲明
mxArray:
mxArray *a;
mwArray:
mwArray a;
銷毀
mxArray
mxDestroyArray a;
mwArray
mwArray類的析構(gòu)函數(shù)自動(dòng)銷毀對(duì)象
g 8h"@量賦值
mxArray
memcpy(dest_ptr,source_ptr,MAX_SIZE);
mwArray
mwArray in1(3, 3, mxDOUBLE_CLASS, mxREAL); mwArray in2(3, 3, mxDOUBLE_CLASS, mxREAL); in1.SetData(data, 9); in2.SetData(data, 9);總結(jié)
- 上一篇: 2020中国程序员调查报告:平均年薪15
- 下一篇: (二)小程序云开发之aggregate.