今天帮群里的一个群友调matlab代码,CDBN,卷积深度置信网络,他说的是这个错误改了好几天都没法改,其实就是matlab如何调用c语言的问题,挺简单的。下面说说我的做法和如何在matlab中调用c语言的问题。
有一个通俗的比喻, 如果程序设计语言是车,那么C 语言就是全能手, C十十语言是加强版的C 语言, MATLAB是科学
家用来完成特殊任务的工具。作为使用MATLAB 的科学家和工程师, 通过混合程序设计,就可以借用CIC十十语言这两个全能手增强
MATLAB 的功能;作为使用C/C十十语言开发的开发者,也可以通过混合程序设计来使用MATLAB强大的科学计算与数据可视化功能。
-
准备好C语言程序,一般情况下要清楚C语言的入口函数,比如,如下的C语言函数:
void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
-
编写mexfunction函数。mexfunction函数为C语言与MATLAB语言的接口函数。调用实例在mylinedetect.c文件中,文件内容如下:
#include <mex.h>
#include <matrix.h>
#include <time.h>
#include <string.h>
void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
const mxArray *model, *layer, *batch_data;
mxArray *model_new, *h_input_array, *h_sample_array, *output_array;
int ni,N,n_dim,n_map_h, n_map_v, nh,nv,j,i,jj,ii,id,
Hstride,Wstride,Hfilter,Wfilter,Hres,Wres,H,W,Hpool,Wpool,Hout,Wout;