Matlab GUI
Publicado por Aritz (1 intervención) el 24/03/2009 11:06:31
Estamos desarrollando para nuestro proyecto fin de carrera una GUI de matlab para análisis de señales. Mediante unos checkbox damos al usuario la opción de elegir diferentes cálculos estádisticos. La detección de estos checkbox es correcta y al ejecutar el programa de ejecución los álculos se realizan correctamente. El problema viene al guardar el valor de la variable. El código es el siguiente:
/******************** Main *************************************/
if (handles.optStats.media==1)
calcularMedia(hObject, handles);
end
if (handles.optStats.max==1)
calcularMax(hObject, handles);
end
if (handles.optStats.min==1)
calcularMin(hObject,handles);
end
/************** Funciones estádisticas *************************/
function calcularMedia(hObject, handles)
if (length(handles.result.ch0.signal) == handles.muestreo.nMuestras)
media = 0;
for i=1:1:length(handles.result.ch0.signal)
media = media + handles.result.ch0.signal(i);
end
media = media / i;
handles.result.ch0.media = media;
guidata(hObject, handles);
end
if (length(handles.result.ch1.signal)==handles.muestreo.nMuestras)
media = 0;
for i=1:1:length(handles.result.ch1.signal)
media = media + handles.result.ch1.signal(i);
end
media = media / i;
handles.result.ch1.media = media;
guidata(hObject, handles);
end
function calcularMax(hObject, handles)
if (length(handles.result.ch0.signal) == handles.muestreo.nMuestras)
max = handles.result.ch0.signal(1);
for i=1:1:length(handles.result.ch0.signal)
if(handles.result.ch0.signal(i) > max)
max = handles.result.ch0.signal(i);
end
end
handles.result.ch0.max = max;
guidata(hObject, handles);
end
if (length(handles.result.ch1.signal) == handles.muestreo.nMuestras)
max = handles.result.ch1.signal(1);
for i=1:1:length(handles.result.ch1.signal)
if(handles.result.ch1.signal(i) > max)
max = handles.result.ch1.signal(i);
end
end
handles.result.ch1.max = max;
guidata(hObject, handles);
end
Como podeís ver, en la parte del Main que nos funciona, dependiendo de las opciones elegidas por el usuario llama a la función pertinente para el análisis estádistico seleccionado. Esto el programa lo ejecuta bien.
Cuando entra en cada función el cálculo se hace correctamente, pero no guarda el valor obtenido en la variable handles.result.cho.xxxxxx en los siguientes casos:
1.- Si sólo está elegida una opción, no se guarda el valor si no es que ejecutamos 2 veces el programa.
2.- Si hay varias opciones elegidas, sólo se guarda el valor del último cálculo realizado después de 2-3 ejecuciones.
El problema está en como almacenamos el valor, pero hasta ahora, en todos los demás datos esta forma que usamos aquí nos funciona.
¿Alguién sabe como poder solucionarlo?
Gracias de antemano
/******************** Main *************************************/
if (handles.optStats.media==1)
calcularMedia(hObject, handles);
end
if (handles.optStats.max==1)
calcularMax(hObject, handles);
end
if (handles.optStats.min==1)
calcularMin(hObject,handles);
end
/************** Funciones estádisticas *************************/
function calcularMedia(hObject, handles)
if (length(handles.result.ch0.signal) == handles.muestreo.nMuestras)
media = 0;
for i=1:1:length(handles.result.ch0.signal)
media = media + handles.result.ch0.signal(i);
end
media = media / i;
handles.result.ch0.media = media;
guidata(hObject, handles);
end
if (length(handles.result.ch1.signal)==handles.muestreo.nMuestras)
media = 0;
for i=1:1:length(handles.result.ch1.signal)
media = media + handles.result.ch1.signal(i);
end
media = media / i;
handles.result.ch1.media = media;
guidata(hObject, handles);
end
function calcularMax(hObject, handles)
if (length(handles.result.ch0.signal) == handles.muestreo.nMuestras)
max = handles.result.ch0.signal(1);
for i=1:1:length(handles.result.ch0.signal)
if(handles.result.ch0.signal(i) > max)
max = handles.result.ch0.signal(i);
end
end
handles.result.ch0.max = max;
guidata(hObject, handles);
end
if (length(handles.result.ch1.signal) == handles.muestreo.nMuestras)
max = handles.result.ch1.signal(1);
for i=1:1:length(handles.result.ch1.signal)
if(handles.result.ch1.signal(i) > max)
max = handles.result.ch1.signal(i);
end
end
handles.result.ch1.max = max;
guidata(hObject, handles);
end
Como podeís ver, en la parte del Main que nos funciona, dependiendo de las opciones elegidas por el usuario llama a la función pertinente para el análisis estádistico seleccionado. Esto el programa lo ejecuta bien.
Cuando entra en cada función el cálculo se hace correctamente, pero no guarda el valor obtenido en la variable handles.result.cho.xxxxxx en los siguientes casos:
1.- Si sólo está elegida una opción, no se guarda el valor si no es que ejecutamos 2 veces el programa.
2.- Si hay varias opciones elegidas, sólo se guarda el valor del último cálculo realizado después de 2-3 ejecuciones.
El problema está en como almacenamos el valor, pero hasta ahora, en todos los demás datos esta forma que usamos aquí nos funciona.
¿Alguién sabe como poder solucionarlo?
Gracias de antemano
Valora esta pregunta


0