新聞中心

        EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > Matlab與C/C++混合編程接口及應(yīng)用

        Matlab與C/C++混合編程接口及應(yīng)用

        作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò) 收藏

        下運(yùn)行example2.exe: mex -f example2.c。運(yùn)行結(jié)果如圖1 所示:

        利用計(jì)算引擎調(diào)用的特點(diǎn)是:節(jié)省大量的系統(tǒng)資源,應(yīng)用程序整體性能較好,但 不能脫離的環(huán)境運(yùn)行,且運(yùn)行速度較慢,但在一些特別的應(yīng)用[9](例如需要進(jìn)行三維 圖形顯示)時(shí)可考慮使用。

        3.2 利用mcc 編譯器生成的cpp 和hpp 文件

        Matlab自帶的C++Complier--mcc,能將m文件轉(zhuǎn)換為C/C++代碼。因此,它為C/C++程序調(diào)用m文件提供了另一種便捷的方法。下面舉例說(shuō)明相應(yīng)步驟:

        a.新建example3.m:function y=exmaple3(n) y=0; for i=1:n y=y+i;end

        保存后在命令窗口中輸入:mcc -t -L Cpp -h example3.

        則在工作目錄下生成example3.cpp 和example3.hpp 兩個(gè)文件。

        b.在VC 中新建一個(gè)基于對(duì)話框的MFC 應(yīng)用程序Test2,添加一個(gè)按鈕,并添加按鈕響應(yīng)函數(shù),函數(shù)內(nèi)容見(jiàn)f 步。將上面生成的兩個(gè)文件拷貝到VC 工程的Test2 目錄下。

        c.在VC 中選擇:工程->設(shè)置,選擇屬性表Link 選項(xiàng),下拉菜單中選擇Input,在對(duì)象 / 庫(kù)模塊中加入lIBMmfile.lib libmatlb.lib libmx.lib libmat.lib libmatpm.lib sgl.lib libmwsglm.lib libmwservices.lib , 注意用空格分開(kāi); 而在忽略庫(kù)中加入 msvcrt.lib;

        d.選擇屬性表C/C++選項(xiàng),下拉菜單選General,在預(yù)處理程序定義中保留原來(lái)有的內(nèi) 容,并添加MSVC,IBMPC,MSWIND,并用逗號(hào)隔開(kāi)。選擇下拉菜單的Precompiled Headers 選 項(xiàng),在“自動(dòng)使用預(yù)補(bǔ)償頁(yè)眉”中添加stdafx.h,然后確定。

        e. 選擇: 工具-> 選項(xiàng), 屬性頁(yè)選擇“ 目錄” , 在include files 加入: C:MATLAB6p5p1externinclude , C:MATLAB6p5p1externincludecpp ; 然后在 Library files 里面加入: C:MATLAB6p5p1binwin32 , C:MATLAB6p5p1extern libwin32microsoftmsvc60;注意根據(jù)用戶的Matlab 安裝位置,修改相應(yīng)目錄。

        f.在響應(yīng)函數(shù)中添加頭文件:#include matlab.hpp #include example3.hpp 函數(shù)響應(yīng)代碼為:

        int i; mwArray n; n=10; n=example3(n); i=n.ExtractScalar(1);

        CString str; str.Format(example3 的返回值是:%d,i); AfxMessageBox(str);

        g. 編譯,連接,執(zhí)行,結(jié)果如圖2 所示。



        關(guān)鍵詞: Matlab 混合編程 接口

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 托克托县| 自贡市| 蒙阴县| 镇巴县| 疏附县| 徐闻县| 阳曲县| 东安县| 会理县| 泸水县| 北海市| 明溪县| 慈利县| 麻栗坡县| 同德县| 衡水市| 麻阳| 福海县| 云浮市| 毕节市| 全椒县| 桐城市| 仁布县| 沛县| 江安县| 邳州市| 区。| 珠海市| 元氏县| 彭山县| 奎屯市| 冷水江市| 双辽市| 玉门市| 宣化县| 阳谷县| 县级市| 宜章县| 萍乡市| 潍坊市| 察雅县|