Matlab - Función anónima para configurar plot

 
Vista:
Imágen de perfil de Fabio Guerra

Función anónima para configurar plot

Publicado por Fabio Guerra (8 intervenciones) el 16/04/2019 04:15:57
Buen dia, he estado trabajando mucho con funciones anónimas últimamente y tuve un inconveniente al ejecutar la siguiente(setgraph):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
f={@(t)title(t);@()xlabel('X');@()ylabel('Y');@()zlabel('Z');@(limax)axis([limax limax limax limax]);};
setgraph=@(t,limax){f{1}(t),f{2}(),f{3}(),f{4}(),f{5}(limax)}
 
figure()
 
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
 
limax=[-5 5]
 
setgraph('Mesh Matlab',limax)
 
1+1

Me muestra el siguiente error


Error using axis (line 230)
Too many output arguments.

Error in @(limax)axis([limax,limax,limax,limax])

Error in
@(t,limax){f{1}(t),f{2}(),f{3}(),f{4}(),f{5}(limax)}


Y a pesar de que funciono todo, detiene la compilación y no ejecuta la suma final,

no obstante ejecutando la subfunción fuera de la función principal funciona perfectamente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
f={@(t)title(t);@()xlabel('X');@()ylabel('Y');@()zlabel('Z');@(limax)axis([limax limax limax limax]);};
setgraph=@(t,limax){f{1}(t),f{2}(),f{3}(),f{4}()}
 
figure()
 
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
 
limax=[-5 5]
 
setgraph('Mesh Matlab',limax)
f{5}(limax)
 
1+1

Ya he intentado usar xlimit y sus derivados para cambiar los limites en cada eje y se presenta el mismo error

quisiera saber si hay alguna forma de ignorar el error y que continué la ejecución o en su defecto evitar que este se produzca.

De antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Función anónima para configurar plot

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 19/04/2019 15:19:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
f={@(t)title(t);@()xlabel('X');@()ylabel('Y');@()zlabel('Z');@(limax)axis([limax limax limax limax]);};
setgraph=@(t,limax){f{1}(t),f{2}(),f{3}(),f{4}(),f{5}(limax)}
figure()
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
limax=[-5 5]
try %trata de ejecutar 
setgraph('Mesh Matlab',limax)
catch %si ocurre algún error entonces
    disp('no se pudo ejecutar setgraph pero vamos a continuar')
end
1+1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar