bonjour,

je devellope actuellement un modèle simulink ou je fais appel à un bloc matlab embedded, qui contient un script matlab.

Je declare une variable en persistent (var) et je l'initialise dans une boucle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if isempty(var)
     var=lcm(x,y)/x;
end;
le resultat devrais être un entier (int ou double) : lcm étant la fonction qui donne le plus petite diviseur diviseur commun.

ensuite j'utilise cette variable dans un test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if(test == var)
   ...
end;
Or cela ne compile pas car le type de var est un mxArray, or il ne veux pas de ce type pour le test que j'effectue après ...

voila le texte de l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
"Expected either a logical, char, int, fi, single, or double.
Found an mxArray.  mxArrays are returned from calls to the MATLAB interpreter and are not supported inside expressions.  They may be used on the right-hand side of assignments and as arguments to MATLAB calls.
 
Function 'X' (#134.1059.1068), line 47, column 20:
"var""
je me retrouve dans une impasse totale ... j'ai essayé de forcer le cast par la fonction cast(var,'int8') ou directement de caster dans le test int8(var) mais rien ne marche. j'ai aussi essayer de convertir le type mxArray en int ou double mais je n'y arrive pas...
si quelqu'un peut m'aider, je lui en serais très reconnaissant

Merci d'avance