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

歡迎訪問 生活随笔!

生活随笔

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

循环神经网络

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

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

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

表 1?C語言引擎函數庫

引擎函數

功能描述

engOpen

啟動Matlab計算引擎

engGetArray

從Matlab引擎獲得一個Matlab矩陣,用于數據交換

engPutArray

從應用程序向Matlab引擎發送一個Matlab矩陣,用于數據交換

engEvalString

執行一個Matlab命令

engOutputBuffer

創建字符緩沖區,以獲得Matlab文本輸出

engOpenSingleUse

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

engClose

關閉Matlab引擎

engSetVisible

設置Matlab引擎

engGetVisible

返回Matlab顯示狀體

engGetVariable

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

engPutVariable

將指定名稱的Matlab變量存入Matlab工作區

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

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

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

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

打開Matlab計算引擎需要調用engOpen函數,成功打開Matlab引擎后,將

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

1.?engOpen

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

參數說明:輸入參數為一個字符指針,函數通過該指針指向的字符串所包含

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

2.?engEvalString

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

*string)

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

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

已經關閉。

3.?engClose

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

參數說明:輸入參數ep為已經打開的Matlab計算引擎。返回0表示成功關

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

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

1.2.?Visual C++調用Matlab引擎時的環境設置

當在Visual

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

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

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

directories for”選項卡選取“Include

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

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

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

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

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

經實驗發現,還可以將此步設置改為:在Visual C++ 6.0環境中,選擇“Project”菜單中的“Add to

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

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

圖 5?Engine方式靜態鏈接庫設置

1.3.?Visual C++調用Matlab引擎實例

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

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

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

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

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

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

添加Matlab引擎庫對應的靜態鏈接庫文件

在對話框窗體中添加一個按鈕,如下圖所示設置按鈕的標題和控件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("單擊確定按鈕,系統重新顯示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引擎的工作區

engPutVariable(ep, "T", T);

//通過Matlab引擎執行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占用的內存空間

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引擎,系統將退出Matlab應用程序!",

"Matlab引擎", MB_OK|MB_ICONINFORMATION);

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

}

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

圖 7?實驗結果一

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

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

C++的應用程序中,然后自動的送給Matlab執行。當然,可以通過向Matlab引擎工作空間讀取或寫入變量實現Matlab和Visual

C++的數據交互。

圖 8?實驗結果二

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。