Problem with mxGetScalar in mex function cuda
이전 댓글 표시
Hi *,
i've three different files: main.m makeOperator.m makeOperator_A.cu
In main.m:
global DICTIONARY
load('data.mat');
A = makeOperator();
x = rand( size(A,2), 1, 'double' );
R = A*x;
In makeOperator.m:
classdef makeOperator
properties
methods
..
function v = mtimes( obj, x )
global DICTIONARY
..
v = makeOperator_A( DICTIONARY);
end
..
end
In makeOperator_A.cu:
void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[]) {
mxArray* tmp;
..
tmp = mxGetField(prhs[0],0,"nV");
nV = mxGetScalar(tmp);
..
}
DICTIONARY is in data.mat. DICTIONARY is a struct and nV is a field of a struct
Whit mxGetScalar(tmp) i obtain nV=0 instead of nV=72 that is the true value of nV saved in DICTIONARY.nV
Why?
Thanks,
Davide
채택된 답변
추가 답변 (2개)
James Tursa
2014년 6월 9일
Can you verify the value of DICTIONARY.nV just prior to making the mex call? E.g.,
display(DICTIONARY.nV);
v = makeOperator_A( DICTIONARY);
카테고리
도움말 센터 및 File Exchange에서 Write C Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!