Matlab - Duda handle class

 
Vista:
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Duda handle class

Publicado por Alejandro (6 intervenciones) el 16/07/2019 10:45:57
Tengo una handle class "classdef representa < handle", lo cual hace que las propiedades (todas las tengo definidas como de acceso privado) se sobrescriban con los nuevos datos introducidos.

En una de esas de esas propiedades guardo un array que contiene todas las lineas con sus respectivas propiedades de un determinado plot que realizo, "rep.LineList = plot(rep.Tab2Axes,rep.FRM','b','LineWidth', 0.5);"

Más adelante el usuario puede ajustar ciertos factores y realizar un nuevo plot que sustituye al anterior,"plot(rep.Tab2Axes,rep.FRM','b','LineWidth',0.5);" pero esto hace que rep.LineList se "corrompa" por asi decirlo y cuando intento acceder a sus datos obtenga "Invalid or deleted object.".

Hay alguna manera de excluir una propiedad , para que no sea afectada por el handle?
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda handle class

Publicado por Daniel (354 intervenciones) el 16/07/2019 13:08:37
Hola,

El problema parece mas bien que se ha borrado la gráfica. La variable que apunta a ella dará ese error porque el objeto al que referencia no existe y no es posible acceder a sus propiedades.

Para esto lo mejor es comprobar si el objeto sigue existiendo con ishandle(h), donde h es la referencia a la figura.

Saludos,
Daniel Rodríguez.
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
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

Duda handle class

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 16/07/2019 18:50:13
tal y como te decía el amigo Daniel Rodríguez el objeto está borrado, y la razón es muy simple:

si tú ejecutas
1
rep.LineList = plot(rep.Tab2Axes,rep.FRM','b','LineWidth', 0.5);
y en otra línea ejecutas
1
plot(rep.Tab2Axes,rep.FRM','b','LineWidth', 0.5);
entonces esta última línea borraría tu objeto iniciado porque el último plot siempre va a reemplazar al que ya está mientras no uses hold on que tampoco es la idea ya que te estás refiriendo a la misma gráfica

Entonces lo recomendable es que siempre al modificar tu gráfica utilices rep.LineList = plot(rep.Tab2Axes,rep.FRM','b','LineWidth', 0.5); para que esta nueva gráfica que está siendo creada sea guardada en rep.LineList
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Duda handle class

Publicado por Alejandro (6 intervenciones) el 17/07/2019 21:18:54
Lo que quiero es que rep.LineList almacene durante todo el programa los datos del primer plot, por eso pregunto si hay alguna forma de que esa propiedad no se vea afectada por el handle.
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
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

Duda handle class

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 17/07/2019 21:34:49
cada vez que vayas a graficar agrega al inicio rep.LineList=plot.... antes del plot siempre agrega tu variable para que no se vea afectada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Duda handle class

Publicado por Alejandro (6 intervenciones) el 18/07/2019 00:14:03
Eso hace que sobrescriba los datos por los del segundo plot, y no quiero eso. Quiero que solo tenga los datos del primer plot.
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
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

Duda handle class

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 18/07/2019 01:21:35
entonces antes del segundo plot agrega el comando figure; para que el segundo plot se grafique aparte en este caso no debes colocar rep.LineList en el segundo plot
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Duda handle class

Publicado por Alejandro (6 intervenciones) el 18/07/2019 10:52:56
Los plot se realizan dentro de una pestaña en un tabgroup, por lo cual tienen que estar siempre en la misma figura.
Lo que he hecho es hacer una figura invisible y copiar allí el plot original para consultar los datos.
Pero pregunto si hay alguna forma de hacer que una propiedad no sea afectada por el remplazo del handle para ahorrarme esto.
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda handle class

Publicado por Daniel (354 intervenciones) el 18/07/2019 22:05:06
Hola,

Básicamente lo que quieres es que al sobrescribir el contendido de un objeto este conserve el contenido original. Creo que no se puede hacer con los ejes de Matlab.

Saludos,
Daniel Rodríguez.
Analytics Lane
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