導航:首頁 > 編程語言 > 精通matlab與c混合編程

精通matlab與c混合編程

發布時間:2022-10-03 20:41:46

㈠ 我有問題想在Matlab中文論壇《精通Matlab與C/C++混合程序設計》版塊問下劉維老師

字更加困難
字,請嘗試使用MATLAB控制,然後是C + +控制的matlab
參考:
「MATLAB統計分析與應用:40個案例40
」掌握Matlab和C / C + +混合程序設計「

㈡ 精通matlab與c/c++混合程序設計第三版

zhe s sm a wo kan bu dong

㈢ matlab VC混合編程調用神經網路工具箱

調用MATLAB Engine雖然可以實現對神經網路工具箱的功能,但是因為這種方法是基於C/S模式的,效率很低,而且需要在matlab下實現其功能,無法脫離matlab直接運行,所以,基於這個原因,我放棄了利用MATLAB Engine來實現混合編程。利用C++數學庫雖然可以脫離MATLAB直接運行,但是C++數學庫並不支持神經網路工具箱,所以,無法實現基於神經網路的混合編程。利用mcc命令雖然可以直接生成.exe文件,並可以脫離MATLAB在VC++中直接運行,但是因為其自身的諸多缺點,這種方法並不能編譯神經網路函數為C++文件,所以,也無法勝任這個任務。 最後,只有COM組件這一個辦法了,由於COM組件技術的強大功能,利用matlab的COM Builder工具可以實現脫離matlab的混合編程,並成功的調用了神經網路工具箱。

㈣ 怎樣用c#與matlab混合編程求解非線性方程組

你可以把matlab封裝成dll給C#調用,上研究生的時候干過這個,具體怎麼弄也記不太清楚了。
你可以參考一下這個:
http://wenku..com/link?url=__LGZC2ns0J_-C

㈤ matlab和c語言混合 怎麼使用

input(..) 1、選項用於決定用戶的輸入是作為一個表達式看待,還是作為一個普通的字元串看待。例如: >> input('請輸入一個矩陣:') 請輸入一個矩陣:magic(3) ans = 8 1 6 3 5 7 4 9 2 >> input('請輸入一個字元串:','s') 請輸入一個字元串:ma...

㈥ matlaba與c混合編程中,函數的調用。

convolce.c也要編譯,否則找不到函數的實現模塊。

mexcorrDn.cconvolce.c

㈦ 如何將c文件在matlab simulink中混編

方法/步驟

菜單:工程→ 屬性... 選擇配置屬性下的 VC++ 目錄。在包含目錄欄目中添加matlab相關的include文件。我的matlab裝在F盤中,只要把F:\MatLab\extern\include\win64和F:\MatLab\extern\include兩個目錄配置上去就好,這里注意下要是win64的vs所建立的工程必須是x64的,否則會出錯,比較低的版本則沒有win64,只有win32 這樣是建立一個x86或win32工程即可

在 庫目錄欄目中添加matlab相關的lib文件。例如:F:\MatLab\extern\lib\win32\microsoft;F:\MatLab\extern\lib\win32;F:\MatLab\extern\lib\win64\microsoft;F:\MatLab\extern\lib\win64;
注意這里是針對於不同的工程和機器位數,最好全部加上去,以免出錯。

菜單:工程 屬性 選擇配置屬性下的 連接器→ 輸入。
在 附加依賴項 欄目中輸入項目需要引用matlab的的lib文件庫。
libmat.lib libeng.lib libmx.lib

菜單:工程 屬性 選擇配置屬性下的 連接器→ 常規。
在 附加庫目錄 欄目中,添加庫所在的目錄名稱。如:F:\MatLab\bin\win64
這一步相當的重要,不然的話,各種dll文件找不到,lib文件找不到之類的報錯。

測試:從網上隨便找一個代碼
#include <iostream>#include <iomanip>using namespace std;#include <engine.h>#include <string.h>
void main(){ // 定義循環變數 int i = 0, j = 0;
// 狀態變數
int nStatus = 0; // 定義MATLAB引擎指針 Engine *ep;
// 定義mxArray變數指針 mxArray *A, *B;
// 定義矩陣數組
// 注意:VC中矩陣的行列次序與MATLAB正好時相反,需要轉置。 double arData[3][3] = {{7.5,16.3,9.6},{13.2,8.9,12.3},{9.6,5.4,13.7}}; double arResData[3][3];
// 輸出原矩陣 cout<<"原矩陣為:"<<endl; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { cout<<setw(10)<<arData[i][j]<<" "; } cout<<endl; } // 打開MATLAB引擎 ep = engOpen(NULL); if(ep == NULL) { cout<<"無法打開MATLAB引擎。"<<endl; exit(EXIT_FAILURE); }
// 是否顯示MATLAB窗口:true-顯示;false-隱藏。
nStatus = engSetVisible(ep, false);
if(nStatus != 0)
{
cout<<"設置MATLAB顯示屬性失敗。"<<endl;
exit(EXIT_FAILURE);
}
// 為mxArray變數分配空間 A = mxCreateDoubleMatrix(3,3,mxREAL); B = mxCreateDoubleMatrix(3,3,mxREAL); if(A == NULL || B == NULL) { cout<<"為mxArray變數分配空間失敗。"<<endl;
exit(EXIT_FAILURE); }
// 將數組中的數據寫入到mxArray空間中
memcpy((void*)mxGetPr(A),(void*)arData,sizeof(arData));
// 將矩陣變數A寫入到MATLAB引擎空間
nStatus = engPutVariable(ep,"A",A);
if(nStatus != 0)
{
cout<<"矩陣變數寫入MATLAB引擎空間失敗。"<<endl;
exit(EXIT_FAILURE);
}
// 執行引擎命令求矩陣A的逆矩陣
nStatus = engEvalString(ep,"B=inv(A)");
if(nStatus != 0)
{
cout<<"執行MATLAB引擎命令失敗。"<<endl;
exit(EXIT_FAILURE);
}
// 從MATLAB引擎空間中讀取執行結果
B = engGetVariable(ep,"B");
// 將矩陣變數B復制到數組arResData中
memcpy((void*)arResData,(void*)mxGetPr(B),sizeof(arResData));
// 釋放矩陣變數空間
mxDestroyArray(A);
mxDestroyArray(B);
// 關閉MATLAB引擎
engClose(ep);
// 輸出計算結果
cout<<"逆矩陣為:"<<endl;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
cout<<setw(10)<<arResData[i][j]<<" ";
}
cout<<endl;
}

// 暫停程序,查看結果
system("pause");
}

㈧ matlab與c混合編程,engOpen()的問題,matlab引擎啟動不了

使用engOpen()打開Matlab引擎總是失敗,問題可能就是Matlab組件沒有注冊。注冊方法:點擊開始/運行/cmd,在命令行提示窗口下更改到Matlab安裝路徑/bin,運行指令
matlab/regserver,注冊成功後會彈出Matlab 命令窗口。

㈨ 高峰懸賞<精通Matlab與C_C++混合編程>電子版

MATLAB是一門計算機編程語言,取名來源於Matrix Laboratory,本意是專門以矩陣的方式來處理計算機數據,它把數值計算和可視化環境集成到一起,非常直觀,而且提供了大量的函數,使其越來越受到人們的喜愛,工具箱越來越多,應用范圍也越來越廣泛。MATLAB的發展歷史見下表1-1。(年份不詳的請知道的網友補充。)時間
版本
1985 1.0
1986 2.0(含控制系統工具箱)
1988 3.9
1993 4.0(含Simulink1.0)
1994 4.2(含simulink2.0)
不詳 4.3
不詳 5.3
2000 6.0(含Simulink4.0)
2001 6.1(含Simulink4.1)
不詳 6.21
2003 6.5

1.1 安裝
MATLAB的安裝非常簡單,這里以Windows版本6為例。運行setup後,輸入正確的序列號,選擇好安裝路徑和安裝的模塊,幾乎是一直回車就可以了。這里有一點要注意的是,由於不同操作系統設置,可能會出現一些意外錯誤,而且越高版本的MATLAB對計算機系統的要求也越高,如6.1版本要求至少64M內存,最好128M。所以根據自身情況選擇適合的版本安裝,最好還要在操作系統初安裝後就安裝,避免出現意外。

1.2 運行
MATLAB的啟動運行:#:\MATLAB6p1\bin\win32\matlab.exe(其中#為安裝盤符。)但一般安裝完畢後會在安裝目錄下有一個快捷運行方式。
MATLAB啟動後顯示的窗口稱為命令窗口,提示符為「>>」。一般可以在命令窗口中直接進行簡單的算術運算和函數調用。如果重復輸入一組表達式或計算復雜,則可以定義程序文件來執行達到目的。程序文件擴展名為「.m」,以文本文件形式保存。有兩種方式運行程序文件:一是直接在MATLAB命令窗口輸入文件名,二是選擇File->Open打開m文件,彈出的窗口為MATLAB編輯器。這時可選擇它的Debug菜單的Run子菜單運行。

1.3 幫助文件
學習MATLAB軟體最好的教材是它的幫助文件。只要硬碟容量夠大,極力推薦安裝完整的幫助文檔,即使你對閱讀英文不是很有信心,但我相信其足夠的實例還是能讓你對要查詢的命令函數有一定的了解的。有兩種方法取得幫助信息:一是直接在命令窗口輸入>>help 函數名;如help imread,會得到相應函數的有關幫助信息。二是在幫助窗口中查找相應信息。不同版本的幫助菜單界面有所不同,這只能依賴於你自己去熟悉了。但總體上都和windows的界面具有相似的處理過程。

1.4 MATLAB所定義的特殊變數及其意義變數名 意義
help 在線幫助命令, 如用help plot調用命令函數plot的幫助說明。
who 列出所有定義過的變數名稱
ans 最近的計算結果的變數名
eps MATLAB定義的正的極小值=2.2204e-16
pi π值3.14159265...
inf ∞值,無限大
NaN 非數

1.5 MATLAB中的運算符和特殊字元說明符號
符號用途說明
+ 加
- 減
.* 點乘 詳細說明help arith
* 矩陣相乘
^ 矩陣求冪
.^ 點冪
\ 左除 詳細說明help slash
/ 右除
.\ 點左除
./ 點右除
kron 張量積 詳細說明help kron
, 作分隔用,如把矩陣元素、向量參數、函數參數、幾個表達式分隔開來
; (a)寫在一個表達式後面時,運算後命令窗口中不顯示表達式的計算結果
(b)在創建矩陣的語句中指示一行元素的結束,例如m=[x y z;i j k]
: (a)創建向量的表達式分隔符,如x=a:b:c
(b)a(:,j)表示j列的所有行元素;a(i,:)表示i行的所有列元素;a(1:3,4)表示第四列的第1行至第3行元素
() 圓括弧
〔〕 創建數組、向量、矩陣或字元串(字母型)
{} 創建單元矩陣(cell array)或結構(struct)
% 注釋符,特別當編寫自定義函數文件時,緊跟function後的注釋語句,在你使用help函數名時會顯示出來。
' (a)定義字元串用
(b)向量或矩陣的共軛轉置符
.' 一般轉置符
... 表示MATLAB表達式繼續到下一行,增強代碼可讀性
= 賦值符號
== 等於關系運算符
<,> 小於,大於關系運算符 詳細說明help relop
& 邏輯與
| 邏輯或
~ 邏輯非
xor 邏輯異或
參考資料:http://..com/question/3476662.html?fr=qrl3

閱讀全文

與精通matlab與c混合編程相關的資料

熱點內容
xzforandroid 瀏覽:577
程序員那麼可愛歌曲完整版 瀏覽:906
為什麼購買pdf 瀏覽:45
操作系統代碼編譯 瀏覽:483
程序員東北大學 瀏覽:426
編譯忽略空字元 瀏覽:117
多店鋪阿里雲伺服器教程 瀏覽:378
單片機求初值 瀏覽:420
安卓機如何在電腦備份圖片 瀏覽:925
ca證書加密機價格 瀏覽:798
天乾地支年份演算法 瀏覽:796
程序員打造的視頻 瀏覽:7
java和php通信 瀏覽:680
為什麼黑程序員 瀏覽:163
程序員男生 瀏覽:456
戴爾文件夾內文件怎麼置頂 瀏覽:582
雲伺服器6m網速 瀏覽:722
vivo手機中國聯通伺服器地址 瀏覽:862
工程總控編譯失敗 瀏覽:707
燕趙紅楓app如何下載 瀏覽:867