日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab引擎函数,Matlab引擎库函数

發(fā)布時間:2024/1/23 循环神经网络 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab引擎函数,Matlab引擎库函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Matlab引擎庫包含了一系列從外部應用程序調(diào)用和控制Matlab引擎的函數(shù)。下表列舉了C語言的引擎庫函數(shù),這些函數(shù)后使用了eng前綴名

表 1?C語言引擎函數(shù)庫

引擎函數(shù)

功能描述

engOpen

啟動Matlab計算引擎

engGetArray

從Matlab引擎獲得一個Matlab矩陣,用于數(shù)據(jù)交換

engPutArray

從應用程序向Matlab引擎發(fā)送一個Matlab矩陣,用于數(shù)據(jù)交換

engEvalString

執(zhí)行一個Matlab命令

engOutputBuffer

創(chuàng)建字符緩沖區(qū),以獲得Matlab文本輸出

engOpenSingleUse

打開一個單獨的非共享的Matlab計算引擎

engClose

關閉Matlab引擎

engSetVisible

設置Matlab引擎

engGetVisible

返回Matlab顯示狀體

engGetVariable

從Matlab工作區(qū)(Workspace)獲得一個變量

engPutVariable

將指定名稱的Matlab變量存入Matlab工作區(qū)

關于這些函數(shù)的調(diào)用方式,可參閱Matlab的幫助文件。一般來說,在程序中調(diào)用Matlab計算引擎包含如下3個步驟:

(1)?打開Matlab計算引擎。

(2)?在引擎中執(zhí)行Matlab命令,或者傳遞數(shù)據(jù)等。

(3)?關閉Matlab計算引擎。

打開Matlab計算引擎需要調(diào)用engOpen函數(shù),成功打開Matlab引擎后,將

在程序中獲得指向該引擎的指針。通過這個指針,就可以調(diào)用引擎來執(zhí)行Matlab命令了,這需要調(diào)用engEvalString函數(shù)。完成對Matlab計算引擎的調(diào)用之后,應該關閉該引擎,這需要調(diào)用engClose。

1.?engOpen

函數(shù)原型:extern Engine *engOpen(const char *startcmd)

參數(shù)說明:輸入?yún)?shù)為一個字符指針,函數(shù)通過該指針指向的字符串所包含

的命令與Matlab簡歷一個連接,打開一個Matlab進程,返回一個Matlab引擎類型的指針。

2.?engEvalString

函數(shù)原型:extern int engEvalString(Engine *ep, const char

*string)

參數(shù)說明:ep為engOpen打開的engine指針。String為字符串,指向一個需

要在Matlab計算引擎的工作區(qū)中執(zhí)行的字符串。函數(shù)返回0表示成功執(zhí)行,返回1則表示ep對應的Matlab Engine

已經(jīng)關閉。

3.?engClose

函數(shù)原型:extern int engClose(Engine *ep)

參數(shù)說明:輸入?yún)?shù)ep為已經(jīng)打開的Matlab計算引擎。返回0表示成功關

閉,返回1表示返回出錯。

關于更多的引擎函數(shù)的具體定義可以參見幫助文件。

1.2.?Visual C++調(diào)用Matlab引擎時的環(huán)境設置

當在Visual

C++環(huán)境下調(diào)用Matlab引擎時,編譯接口環(huán)境的配置較為簡單,主要有一下兩步(本地計算機Matlab安裝在目錄C:\MATLAB下)

1.?添加Matlab引擎庫的頭文件和庫函數(shù)的路徑

打開菜單“Tools”,選取“Options…—>Direction”。在“Show

directories for”選項卡選取“Include

files”,添加“C:\MATLAB\EXTERN\LIB\WIN32\MICROSOFT\MSVisual

C++60”(如圖3所示),因為這些引擎庫用到的動態(tài)鏈接庫都在此目錄下。

2.?完成Matlab引擎對應的靜態(tài)鏈接庫的導入工作

在菜單“Project—>Setting”下,選取“Link”選項卡,在“Objecct/Library

Modules”里添加libmx.lib、libmex.lib和libeng.lib。注意三個文件名中間以空格分開(如圖4所示)

經(jīng)實驗發(fā)現(xiàn),還可以將此步設置改為:在Visual C++ 6.0環(huán)境中,選擇“Project”菜單中的“Add to

Project”命令,然后選擇Files選項,將“C:\MATLAB\EXTERN\INCLUDE\LIB\WIN32\MICROSOFT\MSVC60”目錄下的liteng.lib,limex.lib,libmx.lib文件加到工程中。它同樣可以將三個靜態(tài)鏈接庫添加到當前工程中來。

圖 4 ?Include files 路徑配置對話框

圖 5?Engine方式靜態(tài)鏈接庫設置

1.3.?Visual C++調(diào)用Matlab引擎實例

下面通過一個簡單的實例來說明Matlab引擎的使用,它是一個基于對話框的MFC應用程序,Visual

C++下利用Matlab工具箱進行信號處理和圖形顯示的操作。

啟動Visual C++,建立一個新工程,選擇MFC

AppWizard,工程名為MATLABEngine。而后選擇“Dialog

based”,即生成一個基于對話框的MFC應用程序。其余各項采用默認設置。

使用庫的頭文件matlib.h。首先添加Matlab引擎庫的頭文件和庫函數(shù)的路徑,然后在MATLABEngineDlg.cpp中添加engine.h。

添加Matlab引擎庫對應的靜態(tài)鏈接庫文件

在對話框窗體中添加一個按鈕,如下圖所示設置按鈕的標題和控件ID:

圖 6?按鈕控件的標題和控件ID設置對話框

通過Visual C++的ClassWizard,添加按鈕的單擊響應事件,并添加如下代碼。

void CMATLABEngineDlg::OnMATLABEngine

{

Engine *ep; //定義Matlab引擎變量

MessageBox("單擊確定按鈕,Windows正在準備啟動Matlab引擎!",

"Matlab引擎", MB_OK|MB_ICONINFORMATION);

if (!(ep=engOpen("\0")))?//打開Matlab引擎

{

fprintf(stderr, "\n Matlab引擎啟動失敗!\n");

MessageBox("Matlaby引擎啟動失敗!", "Matlab引擎",

MB_OK|MB_ICONERROR);

exit(-1);

}

MessageBox("單擊確定按鈕,隱藏Matlab!", "Matlab引擎",

MB_OK|MB_ICONINFORMATION);

engSetVisible(ep, 0); //隱藏Matlab窗口

MessageBox("單擊確定按鈕,系統(tǒng)重新顯示Matlab!", "Matlab引擎",

MB_OK|MB_ICONINFORMATION);

engSetVisible(ep, 0); //重新顯示Matlab窗口

mxArray *T=NULL;

double time[10]={0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};

//生成矩陣

T=mxCreateDoubleMatrix(1, 10, mxREAL);

memcpy((void *)mxGetPr(T), (void *)time, sizeof(time));

//將矩陣變量寫入Matlab引擎的工作區(qū)

engPutVariable(ep, "T", T);

//通過Matlab引擎執(zhí)行Matlab命令

engEvalString(ep, "D=0.5*(-9.8).*T.^2");

engEvalString(ep, "plot(T,D);");

engEvalString(ep, "title('Position vs.Time for falling

object');");

engEvalString(ep, "xlabel('Time(seconds)');");

engEvalString(ep, "ylabel('Position(meters)');");

engEvalString(ep, "grid on;");

//釋放矩陣變量T占用的內(nèi)存空間

mxDestroyArray(T);

MessageBox("通過例程,說明Matlab的圖形顯示能力!",

"Matlab引擎", MB_OK|MB_ICONINFORMATION);

//畫一朵花

engEvalString(ep, "x=-8:0.5:8;");

engEvalString(ep, "y=x;");

engEvalString(ep, "[Y,X]=meshgrid(y,x);");

engEvalString(ep, "R=sqrt(X.^2+Y.^2)+eps;");

engEvalString(ep, "Z=2*sin(R)./R;");

engEvalString(ep, "surf(X,Y,Z);");

MessageBox("關閉Matlab引擎,系統(tǒng)將退出Matlab應用程序!",

"Matlab引擎", MB_OK|MB_ICONINFORMATION);

engClose(ep); //關閉Matlab引擎,退出Matlab

}

按F7鍵編譯后再執(zhí)行,將會出現(xiàn)對話框。單擊“MATLABEngine”按鈕,將會出現(xiàn)Windows的標準信息框,出現(xiàn)“單擊確定按鈕,Windows正在準備啟動Matlab引擎!”提示信息。單擊“確定”按鈕,可以看到任務欄出現(xiàn)Matlab的圖標,它表示Matlab已經(jīng)啟動。然后會出現(xiàn)“隱藏Matlab”的信息提示框,同樣單擊“確定”按鈕,可以看到任務欄上的Matlab圖標立即隱藏。此時Matlab仍在后臺運行。然后,按照提示進行操作,系統(tǒng)會在任務欄出現(xiàn)“重新顯示Matlab的圖標”信息,并先后出現(xiàn)下面各圖的實驗結(jié)果。

圖 7?實驗結(jié)果一

可以看出,Matlab引擎工作方式實質(zhì)上是Visual

C++等通過編程平臺實現(xiàn)了和Matlab的交互,它將需要在Matlab環(huán)境中執(zhí)行的命令預先“存儲”在Visual

C++的應用程序中,然后自動的送給Matlab執(zhí)行。當然,可以通過向Matlab引擎工作空間讀取或?qū)懭胱兞繉崿F(xiàn)Matlab和Visual

C++的數(shù)據(jù)交互。

圖 8?實驗結(jié)果二

總結(jié)

以上是生活随笔為你收集整理的matlab引擎函数,Matlab引擎库函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。