<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于COM的Matlab參數處理與圖像嵌入在VC中的實(shí)現

基于COM的Matlab參數處理與圖像嵌入在VC中的實(shí)現

作者: 時(shí)間:2012-03-16 來(lái)源:網(wǎng)絡(luò ) 收藏

組件的與C++混合編程方式因擁有獨立的運行環(huán)境和兩種語(yǔ)言的互補優(yōu)勢而被眾多科研人員和編程人員所接受,同時(shí)也是MathWorks公司推薦使用的混編方式。但在程序設計過(guò)程中,通常會(huì )遇到兩個(gè)難點(diǎn)問(wèn)題:(1)二維數組的傳遞與輸出; (2)生成圖形工程界面中。對于第一個(gè)問(wèn)題,Bruce McKinney[1]在MSDN上指出;“如果對一維數組進(jìn)行操作,則SAFEARRAY函數變的簡(jiǎn)單且易操作。但是對于多維數組,同樣的操作要復雜得多”,造成這一問(wèn)題的根源在于與C++對多維數組元素的存儲方式不同。而在本項目開(kāi)發(fā)過(guò)程中回避了這個(gè)復雜的過(guò)程,轉而利用Matlab強大的數組功能將其解決。Matlab完善的圖形功能是其被科研人員所推崇的原因之一,但因其圖形擁有獨立的窗口,嚴重影響了整體界面美觀(guān)和用戶(hù)交互體驗,所以Matlab圖形是混合編程中不可回避的問(wèn)題。對此將通過(guò)實(shí)例介紹兩種圖形方法并分析說(shuō)明其優(yōu)缺點(diǎn)和相關(guān)細節。
本文示例均在Matlab R2008a和 6.0平臺下完成,且通過(guò)調試能夠正常運行。
1 Excel文件讀取方法
平臺下的Excel文件讀取方式復雜難懂,但如果使用Matlab與VC的混合編程方式編寫(xiě)將更加簡(jiǎn)便,而且擁有較強的可擴展性。下面代碼詳細講解了該過(guò)程。
(1)在Matlab平臺下建立CExcelRead.m文件,代碼如下:
function [output,row,col] = CExcelRead(filePath)
//filePath包含了指定文件的路徑和文件名,由VC平臺函數GetPathName()獲取
[typ, desc] = xlsfinfo(filePath);
//xlsfinfo()可獲取指定Excel文件中各個(gè)sheet工作區的名稱(chēng),返回值存入名為desc的cell數組中
sheet1 = cell2mat(desc(1));
//默認打開(kāi)”sheet1”(名稱(chēng)任意),并將其轉換為字符串
output = xlsread(filePath,sheet1);
//返回該Excel文件中的數據,返回值存入output數組中
[row,col] = size(output);
//獲取錄入數據的行列值,返回到VC平臺以供其拷貝指定內存大小的數據
output = reshape(output,row*col,1);
//將該二維數組轉換為一維。這是第二部分二維數組的第一步
保存文件后,使用deploytool工具將其制作成名為FileOpen的(封裝MCR),注冊該控件并將相應的文件拷貝到MFC的工程中,對于基礎操作此處不再贅述。
(2)在VC平臺下創(chuàng )建名為PCA的對話(huà)框的MFC工程,添加一打開(kāi)文件的按鈕控件,ID為ID_FILE_OPEN。篇幅所限只給出部分核心代碼,首先在Dlg類(lèi)中添加3個(gè)私有成員變量用以保存Matlab讀取的數據及行列值,即:
double *m_originData; long m_row, m_col;
在響應函數中添加如下代碼
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=請選擇你的excel數據;
fileDlg.m_ofn.lpstrFilter=Text Files(*.xls)国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放

<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>