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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c matlab 混合编程 调试,64位MATLAB和C混合编程以及联合调试

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c matlab 混合编程 调试,64位MATLAB和C混合编程以及联合调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【環境說明】

電腦操作系統:win 7 旗艦版,64位

MATLAB版本:R2013b

VS版本:Microsoft Visual Studio 2010

【操作說明】

1、在原來工程的基礎上添加下列內容:

#include "mex.h"

//添加庫文件

#pragma comment(lib,"libmx.lib")

#pragma comment(lib,"libmex.lib")

#pragma comment(lib,"libmat.lib")

//下面這個是MATLAB和C進行通信的函數

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

{//注意:nrhs代表的是輸入變量的多少,而不是一個變量維數的大小//定義一個double類型的數組

unsigned int *outData;double test_data[223];double test_data_out[512];

unsignedint data_in[223];double *real_data_ptr;double *real_data_ptr_out;intloop_XDZ;

unsignedintback_length_my;

outData=chk_alloc(512, sizeof *outData);//初始化分配內存空間的過程

real_data_ptr_out=mxCalloc(514, sizeof(char)); //申請空間

real_data_ptr=mxGetPr(prhs[0]);

plhs[0] = mxCreateDoubleMatrix(1,512,mxREAL); //讓第一個輸出參數指向一個1*1的矩陣

real_data_ptr_out=mxGetPr(plhs[0]); //獲得矩陣的第一個元素的指針

for (loop_XDZ=0;loop_XDZ<223;loop_XDZ++) //循環獲取編碼之前的數據源

{

test_data[loop_XDZ]=*real_data_ptr++;

data_in[loop_XDZ]=(unsigned int)test_data[loop_XDZ];

}

back_length_my= DCW_LDPCencode_packaged(data_in,outData,223,0);//最后一個參數是控制加擾與否的選項//下面是需要把數據送到外面去

for (loop_XDZ=0;loop_XDZ<511;loop_XDZ++) //循環獲取編碼之前的數據源

{

test_data_out[loop_XDZ]=(double)outData[loop_XDZ];*real_data_ptr_out++=test_data_out[loop_XDZ];

}return;

}

在上面的函數中,我調用了工程的頂層模塊DCW_LDPCencode_packaged,這個模塊實現的主要功能是,輸入一定長度的數據,輸出一定長度的信息。

2、配置VS工程屬性

在常規選項卡中,把文件的擴展名設置為.mexw64;

在VC++目錄選項卡當中,更改包含目錄為\MATLAB\extern\include文件夾;

在VC++目錄選項卡當中,更改庫目錄為\MATLAB\extern\lib\win64\microsoft;

在鏈接器-輸入選項卡當中,添加附加依賴項libmat.lib、libeng.lib、libmx.lib、libmex.lib;

在下面的模塊定義文件中,設置為test.tdf(這個文件需要自己創建);

【特別補充】在鏈接器->常規 界面上,需要修改輸出文件的形式,否則無法正常生成mexw64文件!!!!!!

新建文本文檔,更改名稱為test.tdf。用文本編輯軟件打開文件,更改其中的內容為:

LIBRARY DCW_Packaged_RS_LDPC_encode_decode(這個是工程的名稱,不是頂層名稱)EXPORTS mexFunction

最后更改配置管理器,將項目改成x64屬性,沿用win32的工程配置。

3、MATLAB文件

out_data=DCW_Packaged_RS_LDPC_encode_decode(enc_data,len_sel,scramble_en);

在MATLAB中寫上面這一句就可以完成調用的過程。DCW_Packaged_RS_LDPC_encode_decode是工程的名字,也是.mexw64文件的名字。左邊是輸出的參數,右邊是輸入的控制參數。

4、編譯工程,進行連接

右鍵點擊VS工程的名字,選擇 生成。發現工程的x64->Debug文件夾下面會生成一個后綴為.mexw64的文件。

更改MATLAB的工作目錄為x64->Debug文件夾(就是.mexw64所在的文件夾)。

在VS中選擇 調試 選項卡,選擇 附加到進程…… 選項,選擇MATLAB.exe,并且在VS中設置斷點。

運行MATLAB程序,即可在VS中觸發斷點進行聯合調試。

【參考文獻】

值得參考的文獻網址:

在64位的系統中,非常實用的參考文章:

總結

以上是生活随笔為你收集整理的c matlab 混合编程 调试,64位MATLAB和C混合编程以及联合调试的全部內容,希望文章能夠幫你解決所遇到的問題。

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