Matlab doesn't release the C code execution until completion of the script
3 次查看(过去 30 天)
显示 更早的评论
The C app send command to the matlab for script M file launching and the matlab doesn't release the C code execution, return from call function, until the m script completion. How to resolve this issue. How C code can run m script and continue to execute other operators and functions?
ex:
const char ptrMatlabCommandStart[] = "run(\"example.m\")";
ep = engOpen(NULL); // open C2M engine
engEvalString(ep, ptrMatlabCommand) // launch example.m script
a = b; // can't be performed until end of the example.m script
Also very interaesting following implementation of C code functionality:
- pa = mxCreateDoubleScalar(value); // initialize in matlab worklspace by C code
- mxSetDoubles(pa, value); // set value in matlab worklspace by C code
- engEvalString(ep, ptrMatlabCommand); // launch matlab script that use value
for ()
{
4. mxSetDoubles(pa, value); // update value in matlab worklspace by C code and impact to matlab script results
// matlab script computes according to the new value - parameter
// matlab also can change value according to launched script
}
5. value = *mxGetDoubles(pa); // read updated value in C app
0 个评论
采纳的回答
Bruno Luong
2022-4-19
编辑:Bruno Luong
2022-4-19
MATLAB is essential sequential/blocking behavior. Whereas you call a function from C or Matlab yo have to wait until completion.
However if you have recent MATLAB you can run a function (restricted capability) in background and get the hand back instantanously using parfval
0 个评论
更多回答(1 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!