MATLAB Mex:从MATLAB中的结构中检索逻辑

时间:2017-12-21 01:16:03

标签: c matlab struct mex

我有一个以这种方式创建的结构:

testStruct = struct; testStruct.tf = true

我想通过mex将这个结构传递给我的c ++代码,这是我所做的快照:

mxArray *mxValue; 
mxValue = mxGetField(prhs[0], 0, "tf");
mxLogical tf = mxGetLogicals(mxValue);
mexPrintf("tf: %i \n", tf);

无论我将testStruct.tf设置为true还是false,都会打印tf: 1。我还使用if条件对其进行了测试,并且无论我输入什么逻辑,if条件都会被执行。

我尝试bool tf = mxGetLogicals(mxValue),但这并不有用。

我能指点一下吗?

1 个答案:

答案 0 :(得分:2)

  

我可以在这上面获得指针吗?

......这就是问题... mxGetLogical将指针返回到mxArray中的第一个逻辑元素。 see documentation

所以试试这个(编译为mexTest):

#include "mex.h"
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{ 
  mxArray *mxValue; 
  mxLogical *tf;  
  mxValue = mxGetField(prhs[0], 0, "tf");
  tf = mxGetLogicals(mxValue);    
  mexPrintf("tf: %i \n", *tf);  
}

运行它给了我这些结果:

>> testStruct.tf = true;
>> mexTest(testStruct)
tf: 1 
>> testStruct.tf = false;
>> mexTest(testStruct)
tf: 0