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

        ?

        VC++與Matlab混合編程方法*

        2014-09-13 06:03:18張沛露王建軍
        吉林建筑大學學報 2014年6期
        關鍵詞:函數(shù)庫數(shù)組調(diào)用

        張沛露 王建軍

        (1:吉林建筑大學計算機科學與工程學院,長春 130118; 2:中國科學院長春光學精密機械與物理研究所,長春 130033)

        Matlab是矩陣實驗室(Matrix Laboratory)的簡稱,它是美國Math Works公司推出的一套數(shù)值計算軟件,以矩陣作為基本數(shù)據(jù)結構,可以實現(xiàn)數(shù)值分析、優(yōu)化、統(tǒng)計、偏微分方程數(shù)值解、自動控制、信號處理、圖像處理等若干個領域的計算和圖形處理功能.Matlab以矩陣作為基本數(shù)據(jù)結構,非常適合大規(guī)模的數(shù)值計算,使用Matlab,可以較使用傳統(tǒng)的編程語言(如C,C++和Fortran等)更快地解決技術計算問題.VC++作為可視化編程的典范,可以利用它進行各類軟件的開發(fā),從編制各種功能強大的軟件界面到開發(fā)各種復雜的數(shù)學算法,均可找到它的身影[1].一般情況下,利用VC對數(shù)學算法進行設計往往費時費力,而Matlab在進行數(shù)學算法設計時具有獨特的優(yōu)勢,因此,在VC中調(diào)用Matlab進行混合編程是一種簡便高效的處理方式[2].

        1 VC++調(diào)用Matlab方法概述

        一般來說,VC++調(diào)用Matlab混合編程有以下幾個途徑:

        (1) 通過Matlab Engine方式. Matlab Engine是Matlab提供的一組接口函數(shù),Matlab Engine采用C/S(客戶機/服務器)模式,Matlab充當后臺服務器,而VC++程序充當前臺客戶機,通過Windows的動態(tài)控件與服務器進行通信,向Matlab Engine傳遞命令和數(shù)據(jù),并從Matlab Engine接受數(shù)據(jù)信息.開發(fā)者可以在前臺程序中調(diào)用這些接口函數(shù),實現(xiàn)對Matlab Engine的控制.采用這種方法幾乎能利用Matlab全部功能,但是,需要在機器上安裝Matlab軟件.

        (2) 直接調(diào)用Matlab的C/C++數(shù)學函數(shù)庫. Matlab中還提供可以供C/C++語言調(diào)用的C/C++數(shù)學函數(shù)庫,其中包含了大量C/C++語言重寫的Matlab數(shù)學函數(shù),這些函數(shù)涉及廣泛,主要包括:線性代數(shù)、計算方法、傅立葉變換、多項式計算、解微分方程等,并且函數(shù)庫中提供了許多矩陣操作函數(shù),在VC中可以直接使用這些函數(shù),通過使用這些函數(shù)可以在VC中方便地實現(xiàn)矩陣運算功能.

        2 VC++調(diào)用Matlab方法示例

        2.1 調(diào)用Matlab Engine方式示例

        在安裝Matlab計算機上,通過調(diào)用Matlab API函數(shù),實現(xiàn)VC++對Matlab各種數(shù)學運算功能的使用[3].以矩陣運算為例,常用的Matlab API矩陣運算函數(shù)(如表1所示).

        表1 常用Matlab API矩陣運算函數(shù)

        若要成功調(diào)用Matlab Engine,還需在VC++中對編譯環(huán)境進行設置,如對頭文件、庫文件包含路徑進行設置等.采用Matlab Engine方式進行調(diào)用,不僅可以進行基本數(shù)學運算,還可以使用Matlab強大的圖形功能.但是,該種方式的缺陷是不能脫離Matlab的運行環(huán)境,即在計算機上必須安裝有Matlab軟件才能運行目標程序,給程序的移植帶來不便.下面的例子給出了使用引擎方式調(diào)用Matlab的常用方式.

        #include

        #include

        #include "engine.h"

        using namespace std;

        void main()

        {

        const int N = 50;

        double x[N],y[N];

        int j = 1;

        for (int i=0; i

        {

        x[i] = (i+1);

        y[i] = sin(x[i]) + j * log(x[i]); //產(chǎn)生-之間的隨機數(shù)賦給xx[i];

        j *= -1;

        }

        Engine *ep; //定義Matlab引擎指針.

        ep=engOpen(NULL); //測試是否啟動Matlab引擎成功.

        //定義mxArray,為行,N列的實數(shù)數(shù)組.

        mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);

        mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上.

        memcpy(mxGetPr(xx), x, N*sizeof(double)); //將數(shù)組x復制到mxarray數(shù)組xx中.

        memcpy(mxGetPr(yy), y, N*sizeof(double)); //將數(shù)組x復制到mxarray數(shù)組yy中.

        engPutVariable(ep, "xx",xx); //將mxArray數(shù)組xx寫入到Matlab工作空間,命名為xx.

        engPutVariable(ep, "yy",yy); //將mxArray數(shù)組yy寫入到Matlab工作空間,命名為yy.

        //向Matlab引擎發(fā)送畫圖命令.plot為Matlab的畫圖函數(shù),參見Matlab相關文檔.

        engEvalString(ep, "plot(xx, yy); ");

        mxDestroyArray(xx); //銷毀mxArray數(shù)組xx和yy.

        mxDestroyArray(yy);

        engClose(ep); //關閉Matlab引擎.

        }

        2.2 調(diào)用Matlab的C/C++函數(shù)庫

        在使用Matlab的C/C++函數(shù)庫前需要進行安裝[4]:

        1) 在Matlab命令窗口輸入:mbuild-setup;

        2) 按照提示選擇VC的編譯器,完成后在Matlab命令窗口中輸入:mex-setup.

        由于Matlab C++ Math Library或Matlab C Math Library是以動態(tài)鏈接庫的形式,提供對函數(shù)的調(diào)用,因此首先要在Visual C++的集成開發(fā)環(huán)境中進行編譯環(huán)境的配置.主要包括:

        1) 設置Matlab中頭文件(*.h)和鏈接庫(*.lib)的路徑;

        2) 設置運行時動態(tài)鏈接庫;

        3) 設置靜態(tài)鏈接的引入庫文件;

        4) 在用到Matlab的源程序中加入#include“matlab.h”.

        下面給出來看matlab自帶的一個使用C函數(shù)庫的例子.

        #include

        #include /* used for EXIT_SUCCESS */

        #include

        #include "matlab.h"/*matlab.h為C數(shù)學函數(shù)庫的頭文件

        static double real_data[]= { 1, 2, 3, 4, 5, 6 };

        static double cplx_data[]= { 7, 8, 9, 10, 11, 12 };

        int main()

        {

        /* 聲明兩個mxArray矩陣變量并賦初值為NULL */

        mxArray *mat0 = NULL;

        mxArray *mat1 = NULL;

        /* 使用自動內(nèi)存管理*/

        mlfEnterNewContext(0, 0);

        /* 創(chuàng)建矩陣mat0,mat1并賦值 */

        mlfAssign(&mat0, mlfDoubleMatrix(2, 3, real_data, NULL));

        mlfAssign(&mat1, mlfDoubleMatrix(3, 2, real_data, cplx_data));

        mlfPrintMatrix(mat0);

        mlfPrintMatrix(mat1);

        mxDestroyArray(mat0);

        mxDestroyArray(mat1);

        mlfRestorePreviousContext(0, 0);

        return(EXIT_SUCCESS);

        }

        3 結語

        本文闡述了VC調(diào)用Matlab的兩種常用方法,對其中較為常用的方法進行了詳細介紹,并給出示例說明,為相關人員進行混合編程提供較為實用的方法.兩種方法都需要Matlab環(huán)境支持,安裝Matlab會占用較多資源,在資源緊張時容易受到限制,下一步擬對Matlab安裝環(huán)境依賴較小的方法進行研究.

        參 考 文 獻

        [1] 朱傳安,潘大夫.Matlab與C/C++混合編程接口及應用[J].微計算機信息,2010(15):237-239.

        [2] [美]David J.KruglinsKi,Scot Wingo.Visual C++6.0技術內(nèi)幕(第五版)[M].北京:北京希望電子出版社,2001:550-672.

        [3] 呂延慶,朱堅民,周福章.基于Visual C++和Matlab的聯(lián)合編程方法的研究[J].計算機應用研究,2000(11):101-103.

        [4] 李天昀,葛臨東.綜述MATLAB與VC++的交互編程[J].計算機仿真,2004(9):193-196.

        猜你喜歡
        函數(shù)庫數(shù)組調(diào)用
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        用于優(yōu)化雷達信號處理的VSIPL函數(shù)庫
        基于Python的開源GIS應用開發(fā)
        Scratch求最值和平均值
        電腦報(2020年34期)2020-09-12 14:03:42
        JAVA玩轉數(shù)學之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        核電項目物項調(diào)用管理的應用研究
        基于BB60C的IQ數(shù)據(jù)采集與存儲系統(tǒng)設計
        LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
        測控技術(2018年5期)2018-12-09 09:04:46
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
        尋找勾股數(shù)組的歷程
        久久99国产亚洲高清| 午夜福利理论片在线观看| 少妇无码av无码专区线| 国产精品乱一区二区三区| 日韩极品免费在线观看| 穿着白丝啪啪的av网站| 最新国产福利在线观看精品| 日日摸夜夜添夜夜添无码免费视频 | 亚洲中文字幕在线爆乳| 小草手机视频在线观看| 精品一区二区av天堂色偷偷| 中出人妻中文字幕无码| 日韩我不卡| 精品日韩av专区一区二区| 日韩中文字幕版区一区二区三区| 777午夜精品免费观看| 国产精品高清视亚洲乱码有限公司 | 日本嗯啊在线观看| 全亚洲最大的私人影剧院在线看 | 亚洲中文字幕高清av| 国产av无码专区亚洲av果冻传媒| 亚洲国产一区二区三区在线观看| 婷婷五月综合缴情在线视频| 国产成人自产拍免费视频| 亚洲熟女乱一区二区三区| 久久久久av无码免费网| 亚洲自拍另类制服在线| 白白色发布在线播放国产| 情头一男一女高冷男女| 老色鬼在线精品视频| 国产精品内射后入合集| 国产亚洲三级在线视频| 亚洲中文字幕久久精品一区| 国产一极内射視颍一| 国产亚洲sss在线观看| 青青草久热手机在线视频观看 | 99久久这里只精品国产免费| 国产麻豆一区二区三区在| 亚洲字幕av一区二区三区四区| 99久久久国产精品免费蜜臀| 一级黄片草逼免费视频|