我有一个以这种方式创建的结构:
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)
,但这并不有用。
我能指点一下吗?
答案 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