亚洲免费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ù)組的歷程
        日韩乱码人妻无码系列中文字幕 | 激情久久av一区av二区av三区| 久久亚洲AV成人一二三区| 国产成人亚洲合色婷婷| 天天射综合网天天插天天干| 亚洲婷婷五月综合狠狠爱| 欧美性群另类交| 网友自拍人妻一区二区三区三州| 护士人妻hd中文字幕| 国产精品中文久久久久久久| 久99久热只有精品国产男同| 亚洲一区二区三在线播放| 一区二区三区四区在线观看日本| 欧美日韩国产精品自在自线| 国产精品亚洲综合久久婷婷| 我和丰满老女人性销魂| 一道本久久综合久久鬼色| 国产性生大片免费观看性| 国产主播在线 | 中文| 翘臀诱惑中文字幕人妻| 国产精品私密保养| 欧美巨大xxxx做受中文字幕| 国产强伦姧在线观看| 国产精品日韩av一区二区| 久久精品国产亚洲av电影网| 98色花堂国产精品首页| 成年人视频在线播放麻豆| 久青草影院在线观看国产| 老熟女高潮一区二区三区 | 无码熟熟妇丰满人妻啪啪| 在线无码免费看黄网站| 漂亮人妻被强了中文字幕| 被黑人猛躁10次高潮视频| 精品99在线黑丝袜| av人妻在线一区二区三区| 久久伊人精品一区二区三区| 秋霞午夜无码鲁丝片午夜精品| 国产在线精品亚洲视频在线| 日本亚洲精品一区二区三| 老熟女高潮一区二区三区| 成人精品免费av不卡在线观看|