国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

Matlab與VC集成

Matlab與VC集成

更新時間:2022-05-06 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

◆ 上海大學通信與信息工程學院 楊高波

Matlab是一個具有強大的矩陣運算、數(shù)據(jù)處理和圖形顯示功能的軟件,其輸出結(jié)果可視化,編程效率極高,極少的代碼即可實現(xiàn)復雜的運行,然而其邊解釋邊執(zhí)行,運算效率較低,實現(xiàn)相同功能的代碼跟其他編程平臺相比運行時間相對較長,且不適合作為通用的編程平臺。因此,許多Matlab的應用程序需要使用諸如VC之類的通用編程平臺,實現(xiàn)Matlab與VC的混合編程,這樣有助于發(fā)揮Matlab和VC的各自優(yōu)勢。

集成的幾種實現(xiàn)方法

為了實現(xiàn)混合編程,Matlab 5.0以后版本自帶了C語言編譯器(Compiler), 可以將M文件轉(zhuǎn)換為C-MEX或C/C++程序。根據(jù)Matlab是否運行,一般將Matlab與VC混合編程分為兩大類:Matlab在后臺運行和可以脫離Matlab環(huán)境運行。

1.Matlab引擎(Engine)采用客戶機/服務器(Client/Server)的計算方式,通過Windows的ActivcX通道和Matlab接口。在具體的應用中,VC的程序作為前端客戶機,通過調(diào)用Matlab Engine在后臺與Matlab服務器建立連接,實現(xiàn)動態(tài)通信。這種方法實現(xiàn)較為簡單,不要求連接整個Matlab,只需要嵌入必要的Matlab Engine庫,可大大地節(jié)省系統(tǒng)資源,但這種Matlab在后臺運行,運行效率低下。

2.Mideva是Mathtools公司推出的一種Matlab集成編譯開發(fā)平臺,提供對Matlab程序文件(M文件)的解釋執(zhí)行和開發(fā)環(huán)境支持。經(jīng)過簡單設置后Mideva可以將M源文件轉(zhuǎn)換為C/C++,然后添加到MSVC、C++ Builder的工程中。

3. 另一種方法是先利用Mideva直接生成EXE文件(方法是啟動Mideva,在菜單“File->Compile to exe”中, 選出需要轉(zhuǎn)換的M文件),然后在VC中通過Shell調(diào)用,常見的外部函數(shù)有shellexec()或winexec()。這種方法簡單方便,但運行時出現(xiàn)一個控制臺窗口,而且由于VC和Matlab之間不能交互,通用性差,僅適用于VC中調(diào)用Matlab實現(xiàn)圖形顯示的場合。

4. 最新也是最方便的方法是通過Matlab 6.0 Add-in實現(xiàn)Matlab與VC的混合編程。

以上方法1需要Matlab在后臺運行,方法2、3、4可以脫離Matlab環(huán)境運行。

Matlab Add-in

Matlab 6.0以后版本對其Compiler作了較大的改進,其支持更多的數(shù)據(jù)類型,更強的優(yōu)化功能,更為重要的是其Matlab Add-in提供了一個Matlab和VC直接集成的途徑。它具有一些新的特征:快速集成M文件到C++工程中,創(chuàng)建獨立的 C/C++應用程序或C MEX DLL;通過M文件創(chuàng)建共享庫或MEX文件;內(nèi)含Visual Matrix Viewer,調(diào)試過程中可以查看矩陣變量的值; 直接修改M源文件而不是修改生成的C/C++文件;方便快捷地打包應用程序等。

Matlab Add-in的安裝:

1. 啟動Matlab,運行“mex-setup”,按照菜單提示選取MSVC。它將配置MEX使用MSVC為默認的編譯器(創(chuàng)建C-MEX文件必需),并安裝Matlab Add-in所需文件到MSVC目錄。

2. 在Matlab環(huán)境下運行“mbuild-setup”, 按提示選取MSVC。它將配置使用MSVC為默認的編譯器(創(chuàng)建獨立應用程序必需),并安裝Matlab Add-in所需的Matlab Compiler和C/C++數(shù)學庫文件到MSVC目錄。

3. 在Matlab環(huán)境下運行“cd(prefdir)”和“mccsavepath”。它將保存當前Matlab路徑到mccpath文件中,這是因為Matlab Add-in脫離Matlab運行,否則它無從知道Matlab路徑。

4. 在MSVC環(huán)境中配置Matlab Add-in,方法是:從菜單“Tools -> Customize”選擇“Add-ins and Macro Files”選項卡,選中“Matlab Add-in”, 點擊“Close”。MSVC工具欄出現(xiàn)Matlab Add-in圖標,以后每次啟動VC,自動加載Matlab Add-in。

5. 配置Windows系統(tǒng)。在Windows 95/98系統(tǒng)下,找到config.sys, 添加一行:shell= c:\ command.com /e:32768 /p(Windows ME有所不同,需設置Conagent.exe的屬性Memory選項卡的Initial Environment值為4096)。從表面看,VC的環(huán)境設置也是步驟較多,但只需設置一次。

程序示例

下面以創(chuàng)建一個Standalone程序為例具體說明。啟動MSVC,打開“File->New”菜單,選擇Project,選擇“Matlab Project Wizard”, Project Name命名為Mytest, 點擊Next,你可以選擇所生成的應用程序的類型:Windows Console EXE、C-MEX DLL、M-MEX DLL、Shared M-DLL; C程序還是C++程序;選取Debug、Release模式;選擇是否生成Main函數(shù);是否需要支持圖形。這里選擇生成C++程序,其余采取默認設置,點擊“Finish”,出現(xiàn)對話框要求選擇添加到工程中的M源文件,選擇文件testplot.m后,這時你可以看到MSVC調(diào)用MCC生成一個混合M文件和C的工程。在“File View”選項卡中可以看到添加的M文件和自動生成的C++文件。

這時大功告成,即可按F7編譯后按F5運行了,運行結(jié)果如下圖所示。



程序運行結(jié)果

這里用到的testplot.m內(nèi)容如下(先在Matlab里編輯好):

function mytest()

t=0: 0.05*pi: 2*pi;

y=sin(t);

plot(t,y,‘b*’);

可以通過雙擊Matlab M-files文件夾下testplot.m打開觀察。生成的testplot.cpp代碼如下(略有刪節(jié)):

// MATLAB Compiler: 2.1 Date: Sat Nov 03 16:37:08 2001

#include “testplot.hpp”

#include “l(fā)ibmatlbm.hpp”

static double _array0_[41] = { 0.0,.157,....};

//自動生成的數(shù)組

void InitializeModule_testplot() {

}

void TerminateModule_testplot() {

}

static void Mtestplot();

_mexLocalFunctionTable _local_function_

table_testplot = { 0, (mexFunctionTableEntry *)NULL };

void mlxTestplot(int nlhs, mxArray * plhs[], int nrhs, mxArray * prhs[]) {

MW_BEGIN_MLX();

{

if (nlhs > 0) {

error(mwArray(“Run-time Error: File: testplot Line: 1 Column: 1 The function \‘testplot\’was called with more than the declared number of outputs (0). ”));

}

if (nrhs > 0) {

error(mwArray(“Run-time Error: File: testplot Line: 1 Column: 1 The function \‘testplot\’ was called with more than the declared number of inputs (0).”));

}

Mtestplot();

}

MW_END_MLX();

}

#line 1 “D:\\ygbtest\\testplot.m”

static void Mtestplot() {

#line 1 “D:\\ygbtest\\testplot.m”

mclMlineEnterFunction(“D:\\ygbtest\\testplot

.m”, “testplot”)

#line 1 “D:\\ygbtest\\testplot.m”

mwLocalFunctionTable save_local_

function_table_(&_local_function_table_testplot);

#line 1 “D:\\ygbtest\\testplot.m”

mwArray ans(mclGetUninitializedArray());

#line 1 “D:\\ygbtest\\testplot.m”

mwArray y(mclGetUninitializedArray());

#line 1 “D:\\ygbtest\\testplot.m”

mwArray t(mclGetUninitializedArray());

// t=0: 0.05*pi: 2*pi;

//

#line 2 “D:\\ygbtest\\testplot.m”

mclMline(2);

#line 2 “D:\\ygbtest\\testplot.m”

t = mwArray(1, 41, _array0_, (double *)NULL);

//

// y=sin(t);

//

#line 3 “D:\\ygbtest\\testplot.m”

mclMline(3);

#line 3 “D:\\ygbtest\\testplot.m”

y = sin(mwVv(t,“t”));

//

// plot(t,y,‘b*’);

//

#line 4 “D:\\ygbtest\\testplot.m”

mclMline(4);

#line 4 “D:\\ygbtest\\testplot.m”

ans.EqAns(Nplot(0, mwVarargin(mwVv(t, “t”), mwVv(y, “y”), “b*”)));

#line 4 “D:\\ygbtest\\testplot.m”

mclMlineExitFunction();

#line 4 “D:\\ygbtest\\testplot.m”

}

自動生成的testplot_mainhg.cpp代碼如下:

#include “matlab.hpp”

//加入Matlab頭文件

#include “l(fā)ibsglinit.hpp”

#include “testplot.hpp”

//加入應用程序頭文件

static mexFunctionTableEntry function_table[1] = { { “testplot”, mlxTestplot, 0, 0, &_local_function_table_testplot } };

static _mexcppInitTermTableEntry init_term_table[1] = { { InitializeModule_testplot, TerminateModule_testplot } };

static _mexcpp_information _main_info = { 1, 1, function_table, 0, NULL, 0, NULL, 1, init_term_table };

可以看到?jīng)]有添加一句C/C++代碼,即生成了一個Matlab的Standalone應用程序(是不是太容易啦)。需要注意兩點: 一是添加到MSVC工程的文件應當為一個函數(shù)文件,而不能是一個Script文件,否則會出現(xiàn)錯誤提示; 二是最好不要修改生成的C/C++代碼,如果需要改動,可以通過在MSVC工作區(qū)中直接修改M文件(無須在Matlab環(huán)境中),重新編譯即可。你可以通過在M文件中設置斷點,在運行中通過Matrix Viewer觀察Matlab變量的值。

目前通過Add-in實現(xiàn)Matlab與VC的混合編程也有一定的不足:如目前并不支持所有的Matlab的函數(shù);生成的程序代碼有些繁雜等。估計Matlab 6.0以后的版本在這方面肯定有所改進的。

結(jié) 論

Matlab Add-in提供了一種實現(xiàn)Matlab和VC混合編程的直接集成的途徑,通過它可以很方便地生成Matlab和VC的混合程序。在圖像處理等需要大量計算的工程應用場合有廣泛的應用價值。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        色婷婷综合久久久中文一区二区| 亚洲国产日韩综合久久精品| 久久久综合视频| 久久66热偷产精品| 精品国产欧美一区二区| 亚洲成年人网站在线观看| 欧美色图天堂网| 欧美aaaaa成人免费观看视频| 一区二区三区鲁丝不卡| 成人免费高清视频在线观看| 中文字幕一区二区三区四区不卡| 亚洲一区二区三区影院| 欧美日本在线播放| 麻豆成人91精品二区三区| 久久精品视频在线看| 91片黄在线观看| 久久国产精品99久久人人澡| 国产精品色哟哟网站| 欧美色老头old∨ideo| 精品一区二区三区在线播放视频 | 中文字幕一区二区三区色视频| 亚洲欧美国产毛片在线| 欧美日韩免费高清一区色橹橹 | 成人午夜激情影院| 一区二区激情小说| 日韩视频在线观看一区二区| 成人av在线播放网址| 亚洲成人av资源| 日韩一区中文字幕| 精品动漫一区二区三区在线观看| 美女视频一区在线观看| 国产精品乱人伦中文| 精品视频在线看| 99这里只有精品| 国产美女视频一区| 日韩高清电影一区| 亚洲色图另类专区| 国产欧美日产一区| 日韩欧美中文一区二区| 日本久久精品电影| 粉嫩av一区二区三区在线播放 | 亚洲国产一区二区a毛片| 久久网站热最新地址| 欧洲生活片亚洲生活在线观看| 欧美极品美女视频| 日韩欧美一区在线观看| 色网站国产精品| 国产成人日日夜夜| 九九九精品视频| 经典三级视频一区| 精品影视av免费| 精品午夜久久福利影院 | 亚洲最新在线观看| 国产精品美女www爽爽爽| 久久久久久一级片| 欧美一区二区美女| 欧美日韩精品一区二区三区| 色婷婷av一区二区| 色婷婷久久久久swag精品| 95精品视频在线| 一本一道久久a久久精品综合蜜臀| 亚洲成人资源在线| 亚洲综合久久av| 亚洲成人在线网站| 久久精品国产亚洲5555| 日韩激情av在线| 日韩va欧美va亚洲va久久| 免费在线观看视频一区| 午夜精品福利视频网站| 日韩在线卡一卡二| 久久99久久精品| 激情av综合网| 成人av片在线观看| 91成人免费在线| 欧美电影一区二区三区| 日韩久久久精品| 国产精品久久久久久一区二区三区| 制服丝袜中文字幕一区| 欧美日本在线看| 欧美sm极限捆绑bd| 国产精品久久久久一区二区三区| 日韩三级在线免费观看| 欧美第一区第二区| 国产精品成人免费| 婷婷亚洲久悠悠色悠在线播放| 久久免费看少妇高潮| 久久先锋影音av鲁色资源网| 亚洲国产精品ⅴa在线观看| 亚洲激情中文1区| 蜜桃av一区二区三区| 大美女一区二区三区| 色天使色偷偷av一区二区| 欧美日韩国产美| 欧美精品一区二区久久婷婷| 最近日韩中文字幕| 麻豆91精品91久久久的内涵| 成人精品小蝌蚪| 91精品国产丝袜白色高跟鞋| 国产精品免费丝袜| 免费欧美在线视频| 在线免费不卡电影| 久久精品一二三| 午夜精品免费在线观看| 国产91丝袜在线播放| 91精品国产综合久久香蕉的特点 | 九九久久精品视频| 99re免费视频精品全部| 2023国产一二三区日本精品2022| 欧美一区中文字幕| 久久久www成人免费毛片麻豆| 日韩一区二区免费高清| 亚洲视频一二三区| 国产一区二三区| 555夜色666亚洲国产免| 亚洲美女屁股眼交3| 国产精品小仙女| 日韩一区二区三区电影在线观看| 日韩一区二区免费高清| 欧美极品xxx| 久久精品国产成人一区二区三区| 国产综合色在线视频区| 欧美日韩视频在线一区二区| 中文字幕日本乱码精品影院| 韩国三级在线一区| 91麻豆精品国产91久久久资源速度| 4438亚洲最大| 午夜精品福利一区二区三区av | 日本一区二区三区免费乱视频 | 欧美特级限制片免费在线观看| 欧洲一区二区三区免费视频| 中文字幕国产一区| 高潮精品一区videoshd| 日韩午夜在线影院| 免费看欧美美女黄的网站| 欧美色图在线观看| 亚洲视频 欧洲视频| www.亚洲精品| 久久精品一区二区三区不卡牛牛| 91精品国产综合久久久久| 日韩毛片在线免费观看| 成人激情免费视频| 国产精品久久久久影视| 97久久精品人人做人人爽| 一区二区三区中文免费| 欧美性生活久久| 亚洲va国产天堂va久久en| 欧美日韩免费视频| 麻豆91在线看| 国产女人18毛片水真多成人如厕| 亚洲成人一区二区在线观看| 在线观看视频一区二区欧美日韩| 精品久久久久久久一区二区蜜臀| 1区2区3区国产精品| 97久久人人超碰| 天天综合日日夜夜精品| 精品女同一区二区| 国产91在线观看| 亚洲午夜精品17c| 日韩精品一区二区三区在线| 风间由美一区二区三区在线观看 | 亚洲观看高清完整版在线观看| 激情成人综合网| 国产精品你懂的| 欧美午夜电影一区| 日韩av一二三| 中文字幕亚洲区| 欧美精品乱人伦久久久久久| 国产在线播放一区二区三区| 国产精品久久三区| 91麻豆精品国产91久久久资源速度 | 亚洲欧美一区二区久久| 国产精品电影院| 色综合咪咪久久| 亚洲成人精品一区二区| 精品处破学生在线二十三| 精品处破学生在线二十三| 岛国av在线一区| 日韩高清不卡在线| 成人欧美一区二区三区小说| 4438亚洲最大| 色老综合老女人久久久| 加勒比av一区二区| 亚洲国产欧美日韩另类综合| 久久只精品国产| 欧美丰满少妇xxxbbb| 91视频com| 国产成人精品一区二| 亚洲v中文字幕| 亚洲欧美国产高清| 日本一区二区免费在线观看视频 | 日韩精品成人一区二区三区| 久久久亚洲综合| 欧美一区二区三区视频免费播放 | 欧美视频一二三区| 成人午夜免费视频| 国产一区二区美女| 日本亚洲最大的色成网站www| 在线不卡a资源高清| 91在线视频18| 99久久夜色精品国产网站|