Espectrograma
Publicado por Virginia (3 intervenciones) el 05/05/2013 11:36:50
Hola a todos, tengo un problemita con la función spectrogram() de Matlab y la interfaz gráfica.
En mi interfaz llamo a un timer cada 0.4 seg para que me pinte una señal en tiempo real, recogida de un casco externo en un axes de GUIDE y me gustaría realizar el espectrograma de esta señal tambien cada vez que llamo a mi función con el timer.
El problema que tengo es que la primera vez que llamo con el timer a la función spectrograma me pinta el espectrograma en el axes, pero en las siguientes iteraciones del timer me genera un figure fuera del axes y de mi GUIDE.
Me gustaría saber si alguien sabe como puedo solucionar esto, como hacer que no me genere la figure, o como ocultarla o borrarla y que me lo pinte dentro del axes.
Este es el código:
function ActualizaEspectro(handles,selecEspec)
global e1 data
xlim(handles.axes4,[1 300]);
if selecEspec==2
y1=data(:,1) ;
auxydata1=get(e1,'Ydata')';
if isempty(auxydata1)
auxydata1=y1;
elseif (length(auxydata1)<300)
auxydata1=[auxydata1(1:end);y1];
else
auxydata1=[auxydata1(length(y1):end);y1];
end
set(e1,'Ydata',auxydata1,'Xdata',[1:length(auxydata1)]);
axis(handles.axes5)
spectrogram(y1)
end
end
En mi interfaz llamo a un timer cada 0.4 seg para que me pinte una señal en tiempo real, recogida de un casco externo en un axes de GUIDE y me gustaría realizar el espectrograma de esta señal tambien cada vez que llamo a mi función con el timer.
El problema que tengo es que la primera vez que llamo con el timer a la función spectrograma me pinta el espectrograma en el axes, pero en las siguientes iteraciones del timer me genera un figure fuera del axes y de mi GUIDE.
Me gustaría saber si alguien sabe como puedo solucionar esto, como hacer que no me genere la figure, o como ocultarla o borrarla y que me lo pinte dentro del axes.
Este es el código:
function ActualizaEspectro(handles,selecEspec)
global e1 data
xlim(handles.axes4,[1 300]);
if selecEspec==2
y1=data(:,1) ;
auxydata1=get(e1,'Ydata')';
if isempty(auxydata1)
auxydata1=y1;
elseif (length(auxydata1)<300)
auxydata1=[auxydata1(1:end);y1];
else
auxydata1=[auxydata1(length(y1):end);y1];
end
set(e1,'Ydata',auxydata1,'Xdata',[1:length(auxydata1)]);
axis(handles.axes5)
spectrogram(y1)
end
end
Valora esta pregunta
0