B'jour,

J'ai une variable issue d'une concaténation de strings, elle contient des matrices et opérateurs. Je souhaiterais réinterpréter cette variable pour la calculer
(ex : variable = [5]+[2] en faisant variable = eval(variable) je veux trouver 7)
En ligne de commande ça fonctionne mais pas sur mon programme -_- et j'ai l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
??? Undefined function or method 'eval' for input arguments of type 'cell'.
 
Error in ==> TailleMatri4>pushbutton3_Callback at 354
Result = eval(Concate);
 
Error in ==> gui_mainfcn at 95
        feval(varargin{:});
 
Error in ==> TailleMatri4 at 17
    gui_mainfcn(gui_State, varargin{:});
 
??? Error using ==> TailleMatri4('pushbutton3_Callback',gcbo,[],guidata(gcbo))
Undefined function or method 'eval' for input arguments of type 'cell'.
 
??? Error while evaluating uicontrol Callback
Je colle le code du bouton qui devrait me permettre d'effectuer le calcul j'espère que cela suffira sinon j'ai toute la première partie du code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
% Effectue le(s) calcul(s) inter-matrices
function pushbutton3_Callback(hObject, eventdata, handles)
Concate = '';
NeedParenthese = 0;
 
% --> Calcul(s)
%il y a 8 champs de Text dont 4 correspondent aux choix d'opérateurs et 4 aux matrices, si l'utilisateur n'a rien rempli au préalable ces champs sont vides
for l = 1:1:4
    %récupère le contenu des text dont est servi pour stocker les matrices recomposés et opérateurs
    ObjSelect = findobj(gcf,'Tag',['MatChmps', num2str(l)]);
    Matri = get(ObjSelect, 'String'); %matrice recomposés via des Edit sous la forme [2,5;3,1]
    ObjSelect = findobj(gcf,'Tag',['op', num2str(l)]);
    Operat = get(ObjSelect, 'String'); %opérateur choisi via Popmenu ex : det() ou *
 
        %det et eig sont les opérateurs placés avant les noms des matrices d'où cas spécial pour la concaténation forme : det([Matrice])
        if ((strcmp(Operat, 'eig') == 1) || (strcmp(Operat, 'det') == 1))
            Concate = strcat(Operat, '(', Concate, Matri);
            NeedParenthese = 1;
        else
            %dans tout les autres cas, forme : [Matrice] opérateur [Matrice]
            Concate = strcat(Concate, Operat, Matri);
        end
end
if NeedParenthese == 1
    Concate = strcat(Concate, ')');
end
 
%Laisse à Matlab le soin de l'opération "^^
ObjSelect = findobj(gcf,'Tag','ResultatStr');
set(ObjSelect, 'String', Concate); %résultat concaténer ex: Concate = 'det([1]+[2])'
Result = eval(Concate); % <= là génération du message d'erreur
set(ObjSelect, 'String', Result);
J'arrive pas à m'en dépatouiller sans cette fonction (qui n'a jamais marché qu'une seule fois) que vous bannissez à corps et à cris... Si vous pouviez m'aider ?!

Merci par avance,