Azzera filtri
Azzera filtri

Matlab doesn't release the C code execution until completion of the script

1 visualizzazione (ultimi 30 giorni)
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:
  1. pa = mxCreateDoubleScalar(value); // initialize in matlab worklspace by C code
  2. mxSetDoubles(pa, value); // set value in matlab worklspace by C code
  3. 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

Risposta accettata

Bruno Luong
Bruno Luong il 19 Apr 2022
Modificato: Bruno Luong il 19 Apr 2022
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

Più risposte (1)

Alex Sidorov
Alex Sidorov il 19 Apr 2022
Great, thanks :)

Categorie

Scopri di più su App Building in Help Center e File Exchange

Prodotti


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by