當前位置:首頁 » 編程軟體 » c與matlab混合編程

c與matlab混合編程

發布時間: 2022-08-03 05:09:29

『壹』 matlab與c 混合編程 大概可提速多少倍

我做圖像處理的時候,先是用MATLAB,因為有大量的循環處理,其運行時間將近一分鍾,後來改用MATLAB與C混合,時間縮短至0.09秒,時間之差,真的是不可估量。

但是,情況不完全如此,MATLAB優點在於矩陣運算中,如果你的程序中有大量的矩陣運算,那麼混合編程個人不是很建議;c語言優點在於循環速度很快。

我也有這樣的經歷,我的演算法中有大量的矩陣運算(由於我是做圖像處理,矩陣基本上是512*512的),本來用MATLAB編程用了9秒左右的時間,但是改用了C混合後,N長時間,反正我是等了將近一分鍾,混合程序我是檢驗過的,沒有死循環的。

以上這些完全個人經驗之談,希望對您有個幫助。

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

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

『叄』 matlab和c語言怎麼混合編程相關書籍

MATLAB是一個功能強大的數學軟體,擅長於用矩陣運算完成各種數學功能。
但是其程序需要在MATLAB環境下解釋執行,效率不高。
如果能將它強大的函數庫用於C語言,利用C來編譯執行,MATLAB將能發揮更大的作用。

『肆』 C和matlab混合編程,mxCreateDoubleMatrix該函數申請內存失敗,返回0x00000000

代碼貼上來看一下?是不是你申請的矩陣太大了?最好用C 先申請一下矩陣,測試內存大小。如果成功,銷毀矩陣,用Matlab申請矩陣;不成功,則重新想辦法。

『伍』 matlab與c(注意不是c++) 混合編程 error LNK2019: 無法解析的外部符號

遇到這種錯誤只有一種可能
就是有聲明 但沒有具體的實現

『陸』 如何將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");
}

『柒』 想用C和matlab混合編程進行神經網路訓練,如何脫離matlab環境,matcom能調用sim函數嗎謝了!大神

sim函數我建議你直接寫成下面這個,不然混合編程的時候很可能用不了。

%計算S1與S2層的輸出
A1=tansig(W1*p,B1);
A2=purelin(W2*A1,B2);

『捌』 vc matlab 混合編程,哪種方式最好

調用matlab引擎:是要求MATLAB作為VC的一個後台來調用,從本質來說還是在MATLAB中運行的程序;
基於matcom:可以脫離MATLAB的環境,但是貌似有一部分MATLBA中的函數不能完全調用;而且方法簡單;
基於COM的:這個我不太會也沒有試過;
我推薦將MATLAB的程序編譯成動態庫在VC中調用,這也可以完全脫離MATLAB的環境,可以完美調用

『玖』 c語言與matlab混合編程怎麼生成m文件

通過matcom混合編程。

首先把matlab語言轉換成dll,可以在c裡面調用。

當然,新版本的matlab可以把m語言直接轉換成標准c

熱點內容
python如何生成隨機數 發布:2024-04-28 02:21:59 瀏覽:168
小雨游戲解說我的世界伺服器 發布:2024-04-28 02:08:12 瀏覽:876
安卓怎麼刪除賬戶 發布:2024-04-28 02:06:50 瀏覽:828
內存解壓縮 發布:2024-04-28 01:58:10 瀏覽:867
三星存儲卡防偽 發布:2024-04-28 01:50:59 瀏覽:276
輕雲伺服器和雲伺服器的區別 發布:2024-04-28 01:50:32 瀏覽:552
xcode如何編譯c語言 發布:2024-04-28 01:48:53 瀏覽:181
create存儲過程 發布:2024-04-28 01:42:52 瀏覽:578
如何找緩存 發布:2024-04-28 01:24:04 瀏覽:947
蘋果手機資料怎麼傳送到安卓手機 發布:2024-04-28 01:18:35 瀏覽:468