青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

[轉載]在Visual C++中調用Matlab的其他方法

1. 利用Matlab引擎

Matlab引擎(Matlab engine)提供了一組 Matlab API 函數,用戶不必關心這個Matlab引擎是如何實現的,只需要調用這些函數即可。正是通過這些 API 函數,實現了應用程序進程之間的傳遞數據,從而達到兩者之間的良好結合。
Matlab引擎應用程序的實質是把Matlab作為一個引擎,允許從自己的Visual C++程序調用這個引擎。在運行時,引擎作為一個進程單獨運行,此時Visual C++程序也作為一個進程單獨運行,兩者可以通過進程間的通信機制進行交互。
Matlab引擎采用客戶和服務器計算模式。在運行中,Visual C++的C語言或C++語言的程序作為前端客戶機,它向Matlab引擎傳遞命令和數據信息,并從Matlab引擎接收數據信息,Matlab引擎提供了下列幾個函數:
engOpen:啟動Matlab引擎
engClose:關閉Matlab引擎
engGetArray:從Matlab引擎中獲得一個Matlab矩陣,用于數據交換
engPutArray:從應用程序向Matlab引擎發送一個Matlab矩陣,用于數據交換
engEvalString:執行一個Matlab命令
engOutputBuffer:創建一個用于存儲Matlab文本輸出的字符緩沖區

庫文件的制作:
程序在Visual C++下編譯,還需要用到相應的導入庫libeng.lib,libmx.lib,libmat.lib和matlab.lib這幾個動態鏈接庫。在Matlab的安裝目錄Matlab\extern\include下,有以下幾個定義文件:libeng.def,libmx.def,libmat.def,matlab.def。以libeng.def為例,用如下的命令生成導入庫:
C:\MATLABR11\extern\include>lib/def:libeng.def /out:libeng.lib /machine:ix86
其中C:\MATLABR11為本地機器的Matlab安裝目錄,/out:libeng.lib指定的是輸出文件,/machine:ix86是指所用的機器環境,這里的ix86是指支持Intel的處理器。
同樣,生成libmx.lib,libmat.lib以及matlab.lib這幾個相應的庫文件。

庫文件的加入:
把所生成的庫文件加入到VC工程的Project->Settings->link->Object/Library Modules文本框中即可。

2. 利用Matlab自身的編譯器調用工具箱中的函數

Matlab的編譯器可將Matlab的M文件轉換為C或C++的源代碼,以便產生完全脫離Matlab運行環境的獨立的運用程序,但Matlab本身的資料說明編譯器如用來建立獨立的運用程序,就不能調用Matlab工具箱中的函數,這非常不利于實現一些特殊的算法。然而工具箱中的函數既然是M文件,那么就一定可以用編譯器來編譯,以提供如Visual C++的調用函數,但是編譯器只能編譯一個獨立的M文件,也就是說這個 M文件必須不依賴于其他的M文件。如果這個M文件中又調用了其他的M文件,那么可以將被調用的M文件拷貝到調用M文件的相應位置,并做適當的改動,這樣就可以用編譯器來編譯。需要注意的是,編譯器不支持圖形函數,所以M文件中如果有圖形函數,則需要將其注釋掉。

3. 利用Matcom實現Visual C++和Matlab的結合

Matcom4.5是由MathTools公司推出的一個功能強大的軟件(可在www.mathtools.com處獲得,也可以在國內一些數學專業網站得到),它可以將Matlab的.M文件轉換成具有相同功能的C++代碼,這樣既能夠保持Matlab的優良算法,同時也利用了C++的高效率。也就是說,我們可以在Visual C++編譯環境下創建友好的用戶界面,而把一些較為底層的工作,如數據處理、仿真等交給Matlab來完成。
用Matcom來編譯Matlab的.M文件的具體過程是這樣的:
先把M文件按照與Matcom的cpp庫的對應關系翻譯為cpp源代碼,然后用對應版本的C編譯器將.cpp文件編譯成相應的.dll或.exe文件。因此在第一次運行時,要指定所用的C編譯器的路徑,否則將無法編譯。指定好的編譯信息會寫在Matcom\bin\matcom.ini文件中。在安裝Matcom時,它會自動尋找編譯器并將其信息寫入matcom.ini文件。此外,由于Matcom4.5版本采用了TeeChart3.0 OCX控件,因此它能夠支持圖形操作。

4. 利用Visual C++進行外部調用

利用Visual C++進行外部調用的基本思路是這樣的:首先把,M文件加入到一段C程序中去,然后通過Matlab中的mex批處理文件將該C文件生成.exe文件,再通過Visual C++的外部調用的函數ShellExecute()或WinExec()實現外部調用。
mex批處理文件的調用格式如下:
mex –f msvc60engmatopts.bat *.c
利用Visual C++的ShellExecute()函數調用的方法如下:
ShellExecute()函數是在應用程序中運行其他函數的,該函數既可以運行可執行文件,也可以使用相應的可執行文件打開數據文件。它的函數原形是這樣的:
HINSTANCE ShellExecute (
HWND hwnd, //父句柄窗口
LPCTSTR lpVerb, //包含所要執行的操作的字符串
LPCTSTR lpFile, //文件名
LPCTSTR lpParameters, //包含可執行文件的參數的字符串
LPCTSTR lpDirectory, //默認路徑
INT nShowCmd //所創建進程的顯示方法
);
其中,參數lpVerb可以是“edit”、“find”、“open”、“print”、“explore”或“properties”

posted on 2007-04-06 15:48 ashura 閱讀(4916) 評論(1)  編輯 收藏 引用

評論

# re: [轉載]在Visual C++中調用Matlab的其他方法[未登錄] 2007-10-10 19:30 Jeffrey

文章很好。請問能不能直接通過COM接口調用matlab中的數學函數。請郵件回復szkwkd@126.com,有代碼示例最好。謝謝。  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产主播精品在线| 亚洲国产cao| 亚洲性人人天天夜夜摸| 亚洲免费激情| 国产精品久久婷婷六月丁香| 性色av一区二区三区红粉影视| 亚洲综合视频网| 国产一区二区三区在线观看免费视频| 久久精品国产一区二区三区免费看 | 在线免费精品视频| 亚洲大胆在线| 欧美揉bbbbb揉bbbbb| 欧美一区三区二区在线观看| 欧美一级日韩一级| 亚洲精品午夜| 亚洲欧美国产三级| 影音先锋亚洲电影| 亚洲最新在线视频| 激情视频一区| 9i看片成人免费高清| 国模精品一区二区三区| 亚洲电影av| 国产亚洲欧美一级| 亚洲国产精品精华液2区45| 国产精品美女午夜av| 欧美成人午夜激情| 国产精品日日摸夜夜摸av| 欧美黑人国产人伦爽爽爽| 欧美无砖砖区免费| 亚洲福利视频在线| 国产网站欧美日韩免费精品在线观看 | 国产一二三精品| 亚洲精品在线免费观看视频| 国产欧美一区二区精品婷婷 | 亚洲国产日韩一级| 国产日韩欧美一区二区| 亚洲区一区二| 激情久久中文字幕| 亚洲一区二区动漫| a4yy欧美一区二区三区| 久久香蕉国产线看观看av| 亚洲免费一在线| 欧美高清视频一二三区| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩直播| 亚洲激情成人| 亚洲三级免费| 另类图片国产| 老色批av在线精品| 国产亚洲视频在线| 亚洲中午字幕| 午夜视频在线观看一区二区三区| 欧美成人一区二区三区在线观看 | 欧美激情国产日韩| 国内精品亚洲| 欧美一区二区在线免费播放| 午夜在线播放视频欧美| 国产精品v欧美精品v日韩| 日韩视频精品在线观看| 亚洲欧洲精品一区二区三区波多野1战4 | 在线视频亚洲欧美| 欧美精品一区二区精品网| 欧美激情小视频| 亚洲人体影院| 欧美精品色综合| 日韩天天综合| 亚洲欧美综合一区| 国产麻豆91精品| 久久高清国产| 欧美国产综合| 99一区二区| 国产精品国产三级国产aⅴ入口| 亚洲精品影院| 性伦欧美刺激片在线观看| 国产精品入口尤物| 欧美影院成年免费版| 久久亚洲精品一区| 亚洲日本视频| 欧美视频日韩视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲午夜激情免费视频| 国产女精品视频网站免费| 欧美一区永久视频免费观看| 麻豆精品在线观看| 亚洲精品在线看| 国产精品视频yy9099| 久久国产黑丝| 亚洲国产欧美一区二区三区久久 | 一区二区三区视频在线看| 亚洲欧美日韩一区二区| 国产一区二区久久久| 美女亚洲精品| 亚洲一区二区三区四区在线观看| 久久天堂国产精品| 日韩视频精品| 国产亚洲综合精品| 欧美成人精品福利| 亚洲欧美日韩在线一区| 欧美国产亚洲精品久久久8v| 亚洲综合久久久久| 亚洲电影第三页| 国产精品久久久久久超碰 | 亚洲日本国产| 久久国产精品久久久久久久久久| 亚洲国产成人91精品| 国产精品久久久久久亚洲毛片| 久久色在线播放| 亚洲视频精选| 亚洲高清免费在线| 久久久久久久综合狠狠综合| 亚洲精品久久7777| 国内自拍亚洲| 国产精品电影观看| 欧美高清视频在线播放| 久久精品论坛| 亚洲欧美日韩高清| 日韩视频在线一区| 亚洲国产激情| 老司机精品福利视频| 午夜亚洲激情| 中文欧美日韩| 亚洲美女诱惑| 亚洲国产精品一区二区三区| 国产视频精品免费播放| 欧美体内谢she精2性欧美| 免费看成人av| 老司机午夜精品视频在线观看| 亚洲女同精品视频| 亚洲精品在线电影| 亚洲日本久久| 欧美激情精品久久久久久| 久久免费视频网站| 久久国产精品久久精品国产| 亚洲已满18点击进入久久| 在线亚洲美日韩| 99视频在线精品国自产拍免费观看 | 久久精品一区蜜桃臀影院 | 欧美国产日本| 免费亚洲一区| 欧美成年人在线观看| 葵司免费一区二区三区四区五区| 久久成人免费日本黄色| 午夜精品福利在线观看| 午夜免费在线观看精品视频| 亚洲午夜精品久久久久久浪潮 | 国产视频在线一区二区| 国产日韩欧美二区| 国产一本一道久久香蕉| 国产综合久久久久久| 国产揄拍国内精品对白| 一区二区视频免费在线观看| 精品二区久久| 亚洲人成7777| 洋洋av久久久久久久一区| 99视频超级精品| 亚洲一区二区四区| 亚洲欧美日韩一区| 久久精品视频99| 麻豆成人在线| 亚洲电影毛片| 亚洲视频一区二区在线观看 | 欧美亚洲一区二区在线| 欧美一区二区久久久| 久久久久久尹人网香蕉| 欧美刺激性大交免费视频| 欧美日本韩国一区二区三区| 国产精品高潮呻吟久久av无限| 国产日本欧洲亚洲| 亚洲高清免费在线| 亚洲视频精品| 久久精品一区二区国产| 亚洲第一页自拍| 亚洲视频在线视频| 久久综合久久综合久久| 欧美另类视频在线| 国产亚洲一级| 亚洲精品一区二区三区av| 午夜精品偷拍| 欧美风情在线观看| 亚洲一区二区在线免费观看| 久久久久久9| 欧美吻胸吃奶大尺度电影| 樱桃视频在线观看一区| 亚洲天堂激情| 欧美搞黄网站| 欧美在线www| 欧美日韩伦理在线| 在线日韩av永久免费观看| 亚洲在线国产日韩欧美| 欧美成人xxx| 欧美一级艳片视频免费观看| 欧美日韩高清免费| 在线免费一区三区| 欧美一区二区三区四区夜夜大片| 欧美激情中文字幕在线| 欧美在线短视频| 国产精品免费一区豆花| 亚洲免费成人av| 欧美1区视频| 久久国产精品久久国产精品|