天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

通信工程原理之基于COM的MatIab的參數處理[1]

互聯網技術 責任編輯:chenzhip_1 2012-03-20

摘要:基于COM組件的Matlab與C++混合編程方式因擁有獨立的運行環境和兩種語言的互補優勢而被眾多科研人員和編程人員所接受,同時也是MathWorks公司推薦使用的混編方式。但在程序設計過程中,通常會遇到兩個難點問題:(1)二維數組參數的傳遞與輸出;(2)Matlab生成圖形嵌入VC工程界面中。對于第一個問題,BruceMcKinney[1]在MSDN上指出;

基于COM組件的Matlab與C++混合編程方式因擁有獨立的運行環境和兩種語言的互補優勢而被眾多科研人員和編程人員所接受,同時也是MathWorks公司推薦使用的混編方式。但在程序設計過程中,通常會 遇到兩個難點問題:(1)二維數組參數的傳遞與輸出; (2)Matlab生成圖形嵌入VC工程界面中。對于第一個問題,Bruce McKinney[1]在MSDN上指出;“如果對一維數組進行操作,則SAFEARRAY函數變的簡單且易操作。但是對于多維數組,同樣的操作要復雜得多”,造成這一問題的根源在于Matlab與C++對多維數組元素的存儲方式不同。而在本項目開發過程中回避了這個復雜的過程,轉而利用Matlab強大的數組處理功能將其解決。Matlab完善的圖形處理功能是其被科研人員所推崇的原因之一,但因其圖形擁有獨立的窗口,嚴重影響了整體界面美觀和用戶交互體驗,所以Matlab圖形嵌入是混合編程中不可回避的問題。對此將通過實例介紹兩種圖形嵌入方法并分析說明其優缺點和相關細節。

本文示例均在Matlab R2008a和VC 6.0平臺下完成,且通過調試能夠正常運行。

1 Excel文件讀取方法

VC平臺下的Excel文件讀取方式復雜難懂,但如果使用Matlab與VC的混合編程方式編寫將更加簡便,而且擁有較強的可擴展性。下面代碼詳細講解了該過程。

(1)在Matlab平臺下建立CExcelRead.m文件,代碼如下:

function [output,row,col] = CExcelRead(filePath)

//filePath包含了指定文件的路徑和文件名,由VC平臺函數GetPathName()獲取

[typ, desc] = xlsfinfo(filePath);

//xlsfinfo()可獲取指定Excel文件中各個sheet工作區的名稱,返回值存入名為desc的cell數組中

sheet1 = cell2mat(desc(1));

//默認打開“sheet1”(名稱任意),并將其轉換為字符串

output = xlsread(filePath,sheet1);

//返回該Excel文件中的數據,返回值存入output數組中

[row,col] = size(output);

//獲取錄入數據的行列值,返回到VC平臺以供其拷貝指定內存大小的數據

output = reshape(output,row*col,1);

//將該二維數組轉換為一維。這是第二部分二維數組處理的第一步

保存文件后,使用deploytool工具將其制作成名為FileOpen的COM(封裝MCR),注冊該控件并將相應的文件拷貝到MFC的工程中,對于基礎操作此處不再贅述。

[1]  [2]  [3]  [4]  [5]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

通信工程師備考資料免費領取

去領取

專注在線職業教育25年

信息系統項目管理師

信息系統項目管理師

信息系統項目管理師

!
咨詢在線老師!