html
數組
MATLAB版本:R2013b函數
VS版本:Microsoft Visual Studio 2010oop
【操做說明】編碼
一、在原來工程的基礎上添加下列內容:spa
#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]; unsigned int data_in[223]; double *real_data_ptr; double *real_data_ptr_out; int loop_XDZ; unsigned int back_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,這個模塊實現的主要功能是,輸入必定長度的數據,輸出必定長度的信息。操作系統
指針
【特別補充】在連接器->常規 界面上,須要修改輸出文件的形式,不然沒法正常生成mexw64文件!!!!!!調試
LIBRARY DCW_Packaged_RS_LDPC_encode_decode(這個是工程的名稱,不是頂層名稱)EXPORTS mexFunctioncode
out_data=DCW_Packaged_RS_LDPC_encode_decode(enc_data,len_sel,scramble_en);
在MATLAB中寫上面這一句就能夠完成調用的過程。DCW_Packaged_RS_LDPC_encode_decode是工程的名字,也是.mexw64文件的名字。左邊是輸出的參數,右邊是輸入的控制參數。
四、編譯工程,進行鏈接
右鍵點擊VS工程的名字,選擇 生成。發現工程的x64->Debug文件夾下面會生成一個後綴爲.mexw64的文件。
更改MATLAB的工做目錄爲x64->Debug文件夾(就是.mexw64所在的文件夾)。
在VS中選擇 調試 選項卡,選擇 附加到進程…… 選項,選擇MATLAB.exe,而且在VS中設置斷點。
運行MATLAB程序,便可在VS中觸發斷點進行聯合調試。
【參考文獻】
一、http://www.javashuo.com/article/p-koulqlxb-ev.html
二、http://www.cnblogs.com/tjulxh/archive/2012/04/23/2467087.html
在64位的系統中,很是實用的參考文章: