我需要用MATLAB对采集卡采集的数据进行进一步处理,但是采集卡只能通过C语言进行控制。因此希望能够用C写采集卡控制程序,并用MATLAB进行控制。因为某些控制参数与MATLAB代码有联动,需要从MATLAB向C语言的控制代码传递参数。由于参数较多,希望能够直接用一个结构进行传递。如:
MyStruct.para1=1;
MyStruct.para2=2;
这样我只需要传递一个MyStruct即可。我现在用的是MATLAB的C MEX API进行传递,但是我不知道怎么从C语言中读取MATLAB的结构中的数值。我现在采用的方法是(该代码作用是返回与输入相同的值,用于查看变量输入是否正确):
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
double *pointerlhs, *pointerrhs[2]; /* pointer to real data in new array */
mwSize index;
/* Create an m-by-n mxArray; you will copy existing data into it */
plhs[0] = mxCreateNumericMatrix(1, 2, mxDOUBLE_CLASS, mxREAL);
//pointerrhs[1] = mxGetPr(prhs[0]);
pointerlhs = mxGetPr(plhs[0]);
/* Copy data into the mxArray */
for (index = 0; index < 2; index++) {
pointerrhs[index]= mxGetPr(prhs[index]);
pointerlhs[index] = *pointerrhs[index];
}
return;
}
我现在需要将结构内的参数一个一个传递进去,如在MATLAB中调用的时候是:
MyFunction(MyStruct.para1,MyStruct.para2)
但是这样并没有发挥出结构体的优势。
请问如何在C语言中将MATLAB中的结构体中的数值提取出来?
我尝试过直接传一个参数(MyStruct)进去,但是会报错(MATLAB提示应退出重启MATLAB)
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。