2017-12-21 27 views
0

에서 구조체에서 논리적를 검색 나는이 방법으로 만든 구조체가있다.MATLAB 멕스 :</p> <p><code>testStruct = struct; testStruct.tf = true</code> : MATLAB

내가 true 또는 falsetestStruct.tf 설정 여부
mxArray *mxValue; 
mxValue = mxGetField(prhs[0], 0, "tf"); 
mxLogical tf = mxGetLogicals(mxValue); 
mexPrintf("tf: %i \n", tf); 

, 그것은 tf: 1를 인쇄 :

그리고 난 내 C에 MEX 통해 ++ 코드를이 구조체를 전달하려면,이 내가 무슨 짓을했는지의 스냅 샷입니다. 또한 if 조건으로 테스트했는데 if 조건에 관계없이 어떤 논리를 넣었습니까?

시도했지만 bool tf = mxGetLogicals(mxValue) 시도했지만 유용하지 않았습니다.

포인터를 가져올 수 있습니까?

답변

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); 
} 

그것을 나에게이 resutls 제공 실행 :

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