Comportamiento extraño en MATLAB con respecto a eval ()

1

Considere el siguiente código

x = zeros(3,3);
eval(str3)
g = @(x) eval(str3)
g(x)
g(zeros(3,3))

MATLAB evaluará eval(str3) según lo previsto, pero se quejan de los otros dos que afirman que son Undefined function for input arguments of type 'double'. ¿Por qué?

Markus Klyver
fuente

Respuestas:

0

Puedo entender por qué Matlab arroja un error. str3 no está definido en su ejemplo, pero a partir de su descripción, puedo hacer eso str3 Se definió en su espacio de trabajo y contenía una cadena. En la línea 3, hiciste una función que es independiente de x que evalúa lo que sea str3 Estaba antes de que ejecutaras la línea 3, cada vez. g se llama. Creo que tu línea 3 no refleja lo que pretendías.

Creo que lo que intentas hacer es algo parecido a lo siguiente:

    g = @(x) eval(x);
    g('x = zeros(3,3)')

Pero no has descrito lo que pretendías lograr. Por favor, proporcione más detalles.

Sander
fuente