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

        ?

        C#與Matlab混合編程的兩種模式分析

        2008-07-14 10:05:50陳紅玲周立平
        電腦知識與技術(shù) 2008年18期
        關(guān)鍵詞:文件夾調(diào)用命令

        陳紅玲 周立平

        摘要:簡述了C#與Matlab混合編程的實際意義與應(yīng)用領(lǐng)域,給出了混合編程的兩種具體實現(xiàn)方法,最終分析了這兩種方法在編程效率、軟件復(fù)用度方面的優(yōu)劣。

        關(guān)鍵詞:組件技術(shù);C#;MATLAB

        中圖法分類號:TP311文獻標(biāo)識碼:A文章編號:

        The Analysis about Two Kinds Model of C# and Matlab Mix Programming

        CHEN Hong-ling1,ZHOU Li-ping2

        (1. Zhuhai college of Jilin University,Zhuhai 519041,China; 2.Guangdong Guohua Taishan electric factory,Taishan529228,China)

        Abstract: A brief description about the practical significance and the application domain of C# and Matlab mix programming has been summarized, two kind of models to realize the mix programming have been given, the advantage and disadvantage of the two methods has been analyzed finally in the programming efficiency and software reusability aspect.

        Keywords: Component technology;C#;MATLAB

        1 引言

        MATLAB是當(dāng)今世界上使用最為廣泛的數(shù)值計算軟件之一,具有強大的矩陣計算能力,可以實現(xiàn)數(shù)值分析、優(yōu)化、統(tǒng)計、偏微分方程數(shù)值解、自動控制、信號處理等若干個領(lǐng)域的數(shù)學(xué)計算[1]。C#是微軟.NET戰(zhàn)略中核心的開發(fā)工具,它綜合了Visual Basic的高效率和C++功能的強大性,具有良好的界面設(shè)計功能,可以很方便地建立應(yīng)用程序的可視化界面[2]。整合C#界面設(shè)計能力和MATLAB的科學(xué)計算能力,可以解決環(huán)境評價、金融計算、圖像處理等多個領(lǐng)域的實際問題,具有很好的應(yīng)用前景。

        目前,采用VB、VC、C++ Builder等高級語言與MATLAB的混合編程技術(shù)已有較多的研究并且存在一定的應(yīng)用成果,而C#是近幾年微軟新推出的編程語言,目前對于C#與MATLAB混合編程的研究還很少,本人在實踐應(yīng)用的過程中,總結(jié)了以下關(guān)于C#與MATLAB混合編程接口技術(shù)實現(xiàn)的經(jīng)驗。

        2 DLL文件模式

        利用MATLAB的編譯工具中的mcc命令可以方便地將m文件轉(zhuǎn)化為動態(tài)連接庫文件(dll),但由于轉(zhuǎn)化時是采用C或C++編譯器,所以產(chǎn)生的dll文件可以由VC++直接調(diào)用,卻不能被C#調(diào)用。但C#可以調(diào)用由VC++編譯生成的dll文件,由此想到由VC++作為C#和MATLAB中間的一個橋梁,通過VC++把MATLAB生成的dll文件打包進VC++的dll文件中來,這樣C#就可以間接地調(diào)用MATLAB生成的dll文件了。本文所用軟件的版本為VC++6.0和MATLAB6.5,其中Matlab安裝路徑為D:MATLAB6p5,實現(xiàn)的具體步驟如下:

        第一步:設(shè)置環(huán)境變量

        ① 在Matlab命令窗口中依次輸入:mbuild –setup 和 mex –setup

        ② 選擇VC++ 6.0編譯器下的工具 → 選擇 → 目錄中的Include files添加D:\MATLAB6P5\EXTERN\INCLUDE路徑,在Library files下添加D:\MATLAB6P5\EXTERN\LIB\WIN32\MICROSOFT\MSVC60路徑。

        第二步:使用mcc命令,將MATLAB中的m文件編譯成dll文件

        mcc –t -W libhg:dlltest -T link:lib test libmmfile.mlib

        此例中mlib編譯命令將test.m文件編譯成C代碼,函數(shù)接口為Jisuan( )。同時生成dlltest.exports、dlltest.h、dlltest.lib、dlltest.c、dlltest.dll、dlltest.mlib、dlltest.expt等文件。

        第三步:在VC++中調(diào)用剛生成的dll文件,再打包制作成C#可以調(diào)用的dll文件

        ① 在VC++6.0中將生成后的dlltest.h、dlltest.lib、dlltest.dll三個文件拷貝到名為testMydll的測試工程目錄下,并通過Project → Add To Project → Files將文件引入工程。

        ② 在testMydll.cpp中添加如下語句:

        #include "dlltest.h"

        void testMydll( )

        {dlltestInitialize();

        mlfJisuan_test();

        dlltestTerminate();}

        ③ 在testMydll工程中新建一個名為testMydll.def的文件,在其中添加語句:

        LIBRARY "testMydll.dll"

        DESCRIPTION "Implement"

        EXPORTS

        testMydll @1

        ④將testMydll工程編譯后在其Debug目錄下將生成testMydll.dll、testMydll.exp、testMydll.lib等文件,其中testMydll.dll則是在C#中可以直接調(diào)用的dll動態(tài)鏈接庫文件。

        第四步:C#調(diào)用VC++編譯生成的dll文件

        將前面兩步驟中由Matlab生成的dlltest.h、dlltest.lib、dlltest.dll三個文件和由VC++ 6.0中生成的testMydll.dll文件拷貝到C#的工程中,接著將bin和obj文件夾中的這四個文件導(dǎo)入工程,在工程的程序中添加語句:

        [DllImport ( “testMydll.dll”, EntryPoint=”testMydll()”)] //調(diào)用dll文件聲明

        public static extern void testMydll(); //接口函數(shù)聲明

        testMydll(); //調(diào)用函數(shù)

        3 COM組件模式

        利用MATLAB的comtool工具可以方便地將m文件轉(zhuǎn)化為COM組件,生成的COM組件只要在客戶機上注冊后即可像使用ActivX控件一樣方便被調(diào)用,不同的編程語言可以對其實例化,通過傳參數(shù)的方式加以復(fù)用。此方法的具體步驟如下:

        第一步:在MATLAB中生成COM組件

        ①將Matlab生成的m文件保存名為test.m。在Matlab命令窗口中輸入命令:comtool,打開COM Builder窗口。

        ②在該窗口中新建一個名為component的工程,并在該工程中添加文件test.m。

        ③點擊Build → COM object命令,就可以生成COM組件,其版本號為component 1.0,該例中組件包含一個test類,向外提供一個接口函數(shù)為jisuan( )。在component工程的文件夾distrib下可以找到一個component_1_0.dll文件,這個文件即是所有遵循COM組件技術(shù)規(guī)范的高級語言都能夠調(diào)用的COM組件。

        第二步:在.NET中注冊COM組件

        在C#調(diào)用該COM組件之前,需先對其進行注冊。在.NET開發(fā)平臺中點擊:Project → Add Reference…,在彈出的對話框中選擇COM選項卡,選中剛生成的COM組件component 1.0,點擊OK按鈕即完成了組件的注冊。

        第三步:在C#程序中調(diào)用COM組件

        ①將component_1_0.dll文件拷貝到C#的工程文件夾下的Debug文件夾下,在.cs文件中添加命名空間:using component;

        ②在程序體中添加如下代碼,將COM類實例化:

        component.testClass Csharptest = new testClass();//實例化COM組件中的test類

        Csharptest.jisuan( );//調(diào)用test類中的接口函數(shù)jisuan( )

        4 兩種模式的效率比較

        由上可見,模式一步驟繁鎖,而且還可能由于VC與C#語言細節(jié)上面不一致,使程序運行出錯。比如VC語言中字符采用ASCII編碼占一個字節(jié),而C#語言中字符采用Unicode編碼占兩個字節(jié),因此在傳遞字符參數(shù)時若不考慮這個問題,則將導(dǎo)致程序運行失敗。

        而模式二,步驟簡單,調(diào)用方便,而且生成的COM組件只要在機器上注冊后,便可跨語言甚至跨機器平臺得以復(fù)用,軟件的重用度好,編程效率高。同時生成的COM組件易于修改、擴展性好,利于系統(tǒng)的升級。在系統(tǒng)交付使用后,若需對原算法進行修改或更新,只需將修改后的COM組件覆蓋原有的同名文件即可;而且系統(tǒng)運行速度也較快,因為應(yīng)用程序僅僅在需要進行運算的時候才裝載所需的組件庫,這樣減少了系統(tǒng)啟動時間和內(nèi)存占用。

        5 結(jié)束語

        整合C#優(yōu)秀的界面設(shè)計能力和MATLAB強大的科學(xué)計算能力開發(fā)多領(lǐng)域的應(yīng)用軟件本身就具有良好的實際研究價值,文中給出的DLL文件和COM組件兩種混合編程模式在實踐中都切實可行,而后者由于用到了組件技術(shù),故在編程效率、軟件重用度等方面都略勝一籌。

        參考文獻:

        [1] 蘇金明.MATLAB7.0實用指南(第1版)[M].北京:電子工業(yè)出版社,2004,11.

        [2] 毛堯飛,譯..NET數(shù)據(jù)服務(wù)C#高級編程(第1版)[M].北京:清華大學(xué)出版社,2002,6.

        投稿日期:

        作者簡介:陳紅玲(1980-),女,漢族, 湖南郴州人,助教,碩士,研究方向為數(shù)據(jù)庫技術(shù)。周立平(1977-),男,漢族,湖南郴州人,工程師,碩士,研究方向為嵌入式系統(tǒng)開發(fā)。

        猜你喜歡
        文件夾調(diào)用命令
        磁力文件夾
        只聽主人的命令
        核電項目物項調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        移防命令下達后
        調(diào)動右鍵 解決文件夾管理三大難題
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        這是人民的命令
        TC一鍵直達常用文件夾
        電腦迷(2015年1期)2015-04-29 21:24:13
        利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
        五月婷一本到五月天| 成人免费自拍视频在线观看 | 性饥渴艳妇性色生活片在线播放 | 扒开双腿疯狂进出爽爽爽视频| 国产精品久久久久久久久免费观看 | 中文字幕一区二区人妻出轨| 台湾自拍偷区亚洲综合| 久久精品国产av麻豆五月丁| 亚洲精品夜夜夜妓女网| 亚洲一区中文字幕在线电影网 | 日韩在线精品视频观看| 亚洲一区二区三区99| 国产丶欧美丶日本不卡视频| 欧美日韩亚洲精品瑜伽裤| 亚洲中文字幕无线乱码va| 男女搞事在线观看视频| 色欲综合一区二区三区| 久久国产36精品色熟妇| 国产男女做爰猛烈视频网站| 日韩有码在线观看视频| 人妻夜夜爽天天爽| 亚洲一区视频在线| 日本免费a一区二区三区 | 日韩av无码一区二区三区| 国产精品免费大片| 久久久国产不卡一区二区| 亚洲国产最新免费av| 精品国产一区二区三区av性色| 狠狠久久亚洲欧美专区| 久草国产手机视频在线观看| 丝袜美腿国产一区精品| 狠狠色噜噜狠狠狠狠米奇777| 国产激情视频在线观看首页| 国产一区二区三区在线影院| 午夜三级a三级三点在线观看| 亚洲综合无码一区二区三区 | 久久亚洲精品无码va大香大香| 中国免费av网| 国产高清精品一区二区| 国产午夜福利片| 亚洲欧洲国产日产国码无码 |