Matlab - Funcion plot en segundo plano

   
Vista:

Funcion plot en segundo plano

Publicado por Virginia (3 intervenciones) el 12/12/2012 20:22:17
Hola a todos, estoy haciendo un programa que captura la señal EEG y la representa en tiempo real, tanto la señal como el espectrograma. El problema que tengo es que aunque el programa me dibuja bien las señales cuando esta dibujando no me deja minimizar ni poner la figura en segundo plano para seguir mandando comandos al matlab. y asi poder pararla o llamar a otras funciones.
Pongo aqui mi codigo, a ver si alguien puede ayudarme.

classdef EmotivLogger < handle
%% Modo de empleo;
% %Para crear el objeto:
% a = EmotivLogger;
% %Para comenzar a leer y almacenar los datos en la matriz salida.csv
% a.Run
% %Si quiere dibujar la señal de todos los canales en la misma figula introduzca 0,
% para dibujar un solo canal introduzca el nombre
% a.Plot(canal)
% %Si quiere dibujar el espectro de todos los canales en la misma figula introduzca 0,
% para dibujar el espectro de un solo canal introduzca el nombre
% a.Espectrograma(canal)

%% Dibujar en tiempo real
function Plot(eeg,canal)
eeg.plotTimer = timer('TimerFcn', @(src,event)UpdatePlot(eeg,canal), 'name', 'UpdatePlotTimer','Period', eeg.plotTimerPeriod,'BusyMode','drop','ExecutionMode','fixedDelay');
start(eeg.plotTimer);
end

function StopPlot(eeg)
if ~isempty(eeg.plotTimer) && strcmp(eeg.plotTimer.Running,'on')
stop(eeg.plotTimer);
end
end

function UpdatePlot(eeg,canal)
set(0,'CurrentFigure',eeg.fig_h)
figure(1);
if canal==0
for i=1:14
subplot(14,1,i);
plot(eeg.data(:,i+3));
end
else
for i=1:14
if strcmp (eeg.DataChannelsNames{i+3},canal)
plot(eeg.data(:,i+3));
end
end
end
end
end

Muchisimas 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