Matlab - Función externa y como referirme a ella desde otra función

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

Función externa y como referirme a ella desde otra función

Publicado por Jose (8 intervenciones) el 06/04/2019 18:09:22
Tengo una duda que al parecer creo que es sencilla pero me está costando implementar, mi idea es introducir una función que refresque los plots en todo momento cuando se realice una acción, por ejemplo, cuando yo introduzco el número de un canal y pulso el botón delete de mi interfaz, automáticamente, esa fila de la matriz se queda con todos sus valores a NaN, de manera que si yo al final de la función de pulsar un botón refrescara los plots, no aparecería la señal recientemente eliminada pintada.

La implementación de esta función externa es necesaria porque ahora cuando pulso el botón delete, es cierto que se ponen a NaN todos los valores de la fila de la matriz, pero la señal continúa pintada y es porque no se ha refrescado ese plot. Para la implementación de dicha función he realizado lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function refreshplots(handles)
global tn ecgref_mv
 
plot(handles.signal1,tn,ecgref_mv(1,:));
plot(handles.signal2,tn,ecgref_mv(2,:));
plot(handles.signal3,tn,ecgref_mv(3,:));
plot(handles.signal4,tn,ecgref_mv(4,:));
plot(handles.signal5,tn,ecgref_mv(5,:));
plot(handles.signal6,tn,ecgref_mv(6,:));
plot(handles.signal7,tn,ecgref_mv(7,:));
plot(handles.signal8,tn,ecgref_mv(8,:));
plot(handles.signal9,tn,ecgref_mv(9,:));
plot(handles.signal10,tn,ecgref_mv(10,:));
plot(handles.signal11,tn,ecgref_mv(11,:));
plot(handles.signal12,tn,ecgref_mv(12,:));
plot(handles.signal13,tn,ecgref_mv(13,:));
plot(handles.signal14,tn,ecgref_mv(14,:));
plot(handles.signal15,tn,ecgref_mv(15,:));
plot(handles.signal16,tn,ecgref_mv(16,:));
end

Al final de la función del botón delete estoy escribiendo refreshplots(); para hacer esa llamada, pero no me está funcionando, no sé si he declarado mal la función y hay que hacerlo de otra manera, ¿podrías echarme una mano?
tn es la longitud temporal de la señal

Grcaias
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

Función externa y como referirme a ella desde otra función

Publicado por Daniel (354 intervenciones) el 06/04/2019 19:43:14
Hola,

Entiendo que la función se encuentra dentro del archivo m de un GUIDE. Para llamar desde un código que esta fuera del GUIDE se tiene que hacer

1
función_guide('refreshplots', handles)

donde funcion_guide es el nombre del GUIDE. Fijate que el nombre de la función se tiene que pasar como una cadena de texto.

Otra opción es factorizar el código y guardar la función en un archivo m para que se pueda acceder desde cualquier lugar.

Saludos,
Daniel Rodríguez.
Analytics Lane
Matlab en 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
sin imagen de perfil
Val: 11
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Función externa y como referirme a ella desde otra función

Publicado por Jose (8 intervenciones) el 06/04/2019 19:57:27
Muchas gracias por la respuesta,

Me ha surgido una nueva duda, al tener 16 plots diferentes, me gustaría realizar el comando axis tight sobre cada uno de los plots y no sé como referirme a cada uno de los plots para poner axis tight
He puesto axis tight debajo de cada uno de ellos pero solo lo realiza correctamente en el primero

¿Qué debo escribir para referirme a cada uno de los plots?
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