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位的系统中,很是实用的参考文章: