亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于COM的Matlab參數(shù)處理與圖像嵌入在VC中的實現(xiàn)*

        2011-07-28 01:32:26柳炳利魏友華
        關(guān)鍵詞:方法

        王 維,劉 斌,柳炳利,魏友華

        (成都理工大學(xué) 數(shù)學(xué)地質(zhì)四川省重點實驗室,四川 成都 610059)

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

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

        1 Excel文件讀取方法

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

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

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

        (2)在VC平臺下創(chuàng)建名為PCA的基于對話框的MFC工程,添加一打開文件的按鈕控件,ID為ID_FILE_OPEN。篇幅所限只給出部分核心代碼,首先在Dlg類中添加3個私有成員變量用以保存Matlab讀取的數(shù)據(jù)及行列值,即:

        }上述C++代碼中省略了異常處理和相關(guān)的內(nèi)存、COM釋放代碼,由于代碼比較簡單所以不做進一步解析。請注意,下面將省略COM初始化及實例化等相同代碼。

        (3)需要重點說明的是該方法的擴展性。通常Excel文件中保存多個工作區(qū),有時用戶可能需要打開同一Excel文件中不同工作區(qū)中的數(shù)據(jù),常規(guī)方法實現(xiàn)過于復(fù)雜,但對于本文介紹的方法可以通過修改添加幾條語句即可實現(xiàn)。首先,新建一個m文件用來處理工作區(qū)的選擇,代碼如下:

        由于返回值是一個cell數(shù)組,所以VC平臺要使用CStringArray數(shù)據(jù)結(jié)構(gòu)保存返回值,并顯示各工作區(qū)名稱供用戶選擇。然后,通過人機交互將用戶選擇的工作區(qū)參數(shù)保存并傳遞至CExcelRead.m,通過在CExcelRead.m增加一個工作區(qū)選擇參數(shù),并對代碼稍作修改即可。

        2 二維數(shù)組參數(shù)的傳遞與輸出[2]

        下面以主成分分析為例介紹基于COM的Matlab與VC混合編程中二維數(shù)組參數(shù)處理。

        (1)主成分分析pcamat.m代碼如下:

        綜上,二維數(shù)組參數(shù)處理就是使用reshape()函數(shù)對輸入輸出數(shù)據(jù)維數(shù)進行變換來完成操作。

        3 Matlab圖像嵌入VC界面[3]

        3.1 基于CWnd類的圖像嵌入

        在Windows操作系統(tǒng)下,所有應(yīng)用程序的窗口都是基于MFC中的CWnd類。所以可以通過調(diào)用該類或其派生類中的方法實現(xiàn)圖像嵌入?;舅枷耄涸贛atlab平臺下用COM封裝產(chǎn)生圖形窗口的程序;在VC平臺獲取Figure窗口的句柄,將Figure窗口設(shè)為VC程序的子窗口;(3)將Figure窗口移動到指定顯示位置。

        程序?qū)崿F(xiàn)如下:

        (1)將原pcamat.m進行修改,添加生成圖像的相關(guān)代碼

        (2)封裝打包成名為figure的 COM組件,并完成注冊等相關(guān)操作。因為修改后的m文件運行結(jié)果包含輸出結(jié)果和圖像兩部分,所以下面有關(guān)圖像處理的代碼依然在PCATest控件的響應(yīng)函數(shù)中。

        運行結(jié)果如圖1所示。該方法的缺點是,在圖像生成時會有閃爍現(xiàn)象。而優(yōu)點是前面提到的可以繼續(xù)使用Matlab提供的工具欄。鑒于該缺點影響整體美觀,所以引入下面第二種方法。

        3.2 基于Bitmap類的圖像嵌入

        通過Bitmap類將Matlab生成的.bmp文件加載到VC工程中,使用Bitmap類中的成員函數(shù)對圖像進行處理。由于相關(guān)函數(shù)可以通過幫助手冊獲取,所以此處不再給出相應(yīng)代碼,運行結(jié)果如圖2所示。該方法避免了方法一生成圖像時的閃爍現(xiàn)象,但是BMP圖像顯示效果較差而且無法使用Matlab提供的工具菜單,這是其不足之處。

        使用COM組件進行混合編程時,往往習(xí)慣于在VC平臺下思考所遇到的問題,但是這樣不僅使得問題可能變得復(fù)雜化,或得不到妥善解決,而且也違背了“混合”的初衷。二維數(shù)組參數(shù)處理就是一個很好的例證。其次,充分利用Matlab特性可以使得程序具備良好的擴展性和穩(wěn)定性,對Excel文件讀取方式進行的擴展,明顯使軟件更加人性化。對于圖像嵌入問題,雖然文中提出的兩種嵌入方式可以滿足基本需求,但是仍然存在一些瑕疵,還需要進一步研究。

        [1]MCKINNEY B.Article 5.The Safe OLE Way of Handling Arrays.MSDN,2001.

        [2]劉維.精通 Matlab與 C++混合程序設(shè)計(第 2版)[M].北京:北京航空航天大學(xué)出版社,2008.

        [3]董維國.深入淺出Matlab 7.X混合編程[M].北京:機械工業(yè)出版社,2006.

        猜你喜歡
        方法
        中醫(yī)特有的急救方法
        中老年保健(2021年9期)2021-08-24 03:52:04
        高中數(shù)學(xué)教學(xué)改革的方法
        河北畫報(2021年2期)2021-05-25 02:07:46
        化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
        變快的方法
        兒童繪本(2020年5期)2020-04-07 17:46:30
        學(xué)習(xí)方法
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        最有效的簡單方法
        山東青年(2016年1期)2016-02-28 14:25:23
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        国产99久久久国产精品~~牛| 亚洲精品国产精品系列| 亚洲国产区男人本色| 日本一区二区精品88| 国产91在线免费| 国产精品一卡二卡三卡| 美女精品国产一区二区三区| 精品女同av一区二区三区 | 午夜一级成人| 毛片在线啊啊| 午夜精品一区二区三区av免费| 侵犯了美丽丰满人妻中文字幕| 一区二区在线视频免费蜜桃| 亚洲人成网77777色在线播放| 日韩av无码中文无码电影| 曰本无码人妻丰满熟妇啪啪| www国产精品内射熟女| 日韩精品中文字幕无码专区| 日本不卡一区二区高清中文| 亚洲综合免费在线视频| 日本女同性恋一区二区三区网站| 那有一级内射黄片可以免费看 | av免费在线观看网站大全| 国产免费人成视频在线观看| 亚洲一区二区三区特色视频| 亚洲av日韩av女同同性| 医院人妻闷声隔着帘子被中出| 成人免费一区二区三区| 国产成人亚洲综合无码| 操B小视频国产| 中文字幕有码手机视频| 美妇炮灰被狂躁爽到高潮h| 国产精品区一区二区三在线播放 | 亚洲欧洲巨乳清纯| 无码一级视频在线| 白色白色在线视频播放平台| 一区二区三区午夜视频在线 | 天堂最新在线官网av| 中文字幕日韩高清乱码| 亚洲av片无码久久五月| 久久夜色精品国产噜噜av|