Matlab - hacer una GUI a traves de un programa existente

   
Vista:
Imágen de perfil de Feli

hacer una GUI a traves de un programa existente

Publicado por Feli (10 intervenciones) el 06/10/2014 17:29:35
Hola compañeros,

Estoy empezando a pelearme con el maravilloso mundo de las GUI en Matlab, a través de vídeo tutoriales y algun pdf que he encontrado he aprendido el funcionamiento básico de una GUI, pero me está constando usarla para mi proposito inicial

Os comento, desarrolle un programa que extrae datos de un txt (este está compuesto por varias columnas, y las separa) para posteriormente graficar algunos de los datos y hacer operaciones con ellos, os muestro el programa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
% Pedimos el nombre del archivo
 
archivo=input('Ingrese el nombre del fichero: ','s')
 
caso=input('Pulse 1 o 2, dependiendo del caso que quiera selecionar: ')
% 
if (caso == 1)
 
   [Vmax, I_bat_max, I_placa_max, Vmin, I_bat_min, I_placa_min, Vmedia, I_bat_media, I_placa_media,Pmax, Pmin, P_media]  = DatosTelemetria( archivo )
 
else if (caso == 2)
%  
    [P_gen, P_con, V, I_bat, I_placa, Vmax, I_bat_max, I_placa_max, Vmin, I_bat_min, I_placa_min, Vmedia, I_bat_media, I_placa_media, Pmax, Pmin, P_media] = DatosTelemetria2( archivo )
 
 
    end
end

y aqui os muestro la función DatosTelemetria2 (la 1 es muy parecida, solo cambio algunas cosas)

function [ P_gen, P_con, V, I_bat, I_placa, Vmax, I_bat_max, I_placa_max, Vmin, I_bat_min, I_placa_min, Vmedia, I_bat_media, I_placa_media, Pmax, Pmin, P_media ] = DatosTelemetria2( archivo )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
%% Creamos el fichero a traves de su nombre
 
A=importdata(archivo);
 
%% Construimos los vectores a traves del fichero
v=[];
v= A(:,4);
V=v';

x = length (A);

i_bat=[];
i_bat= A(:,5);
I_bat=i_bat';
 
i_placa=[];
i_placa= A(:,6);
I_placa=i_placa';

%% Cálculo hora de inicio, final 

hora_ini = A(1,1);
hora_fin = A (x,1);

min_ini = A(1,2);
min_fin = A (x,2);

seg_ini = A(1,3);
seg_fin = A(x,3);

% Tiempo toma de datos.
ts=0;
tm=0;
th=0;

ts= seg_fin - seg_ini ;
tm = min_fin - min_ini;
th = hora_fin - hora_ini;
%% se calculan los valores máximo y mínimo de cada vector

%% máximos
Vmax = V(1);
for i=2 : length(V)
    if (V(i)> Vmax)
        Vmax=V(i);
    end
end
Vmax;

I_bat_max=I_bat(1);
for i=2 : length(I_bat)
    if (I_bat(i)>I_bat_max)
        I_bat_max=I_bat(i);
    end
end
I_bat_max;

I_placa_max=I_placa(1);
for i=2 : length(I_placa)
    if (I_placa(i)>I_bat_max)
        I_placa_max=I_placa(i);
    end
end
I_placa_max;

%% mínimos
Vmin=V(1);
for i=2 : length(V)
    if (V(i)<Vmin)
        Vmin=V(i);
    end
end
Vmin;

I_bat_min=I_bat(1);
for i=2 : length(I_bat)
    if (I_bat(i)<I_bat_min)
        I_bat_min=I_bat(i);
    end
end
I_bat_min;

I_placa_min=I_placa(1);
for i=2 : length(I_placa)
    if (I_placa(i)<I_placa_min)
        I_placa_min=I_placa(i);
    end
end
I_placa_min;

%% A continuación se calculá la media de cada vector

%% media
Vm = 0;
for i=1 : length(V)
    Vm=Vm+V(i);
end
   Vm;
   Vmedia = Vm/length (V);

I_batm = 0;
for i=1 : length(I_bat)
    I_batm = I_batm + I_bat(i);
end
   I_batm;
   I_bat_media = I_batm/length (I_bat);
     
I_placam = 0;
for i=1 : length(I_bat)
    I_placam = I_placam + I_placa(i);
end
   I_placam;
   I_placa_media = I_placam/length (I_placa);
   
%% Cálculo de de potencias
P_gen = V.*I_placa;
P_con = V.*I_bat;
P = P_con - P_gen;  

Pmax = P(1);
for i=2 : length(P)
    if (P(i)> Vmax)
        Pmax=P(i);
    end
end
Pmax;
   
Pmin = P(1);
for i=2 : length(P)
    if (P(i)< Pmin)
        Pmin=P(i);
    end
end
Pmin;

Pm = 0;
for i=1 : length(P)
    Pm = Pm + P(i);
end
  Pm;
  P_media = Pm/length (P);

%%   Representación de los vectores
figure (1)
subplot (3,1,1) 
plot (V,'r')
title('V')
subplot (3,1,2)
plot(I_bat, 'b')
title('I bateria')
subplot (3,1,3)
plot(I_placa, 'g')
title('I placa')

figure (2)
subplot (3,1,1) 
plot (P,'r')
title('Potencia total')
subplot (3,1,2)
plot(P_con, 'b')
title('Potencia consumida')
subplot (3,1,3)
plot(P_gen, 'g')
title('Potencia generada')

fprintf ('Hora de inicio: %i horas ', hora_ini)
fprintf (' %i min ', min_ini)
fprintf (' %i seg\n', seg_ini)
fprintf ('Hora de finalización: %i horas ', hora_fin)
fprintf (' %i min ', min_fin)
fprintf (' %i seg \n', seg_fin)
fprintf ('Tiempo de medición %i horas ', th)
fprintf (' %i min ', tm)
fprintf (' %i seg \n ', ts)
end


pues mi proposito es crear una interfaz gráfica sencilla que simplemente tenga un boton para cargar el archivo, y varios axis donde mostrar los distintos plots, es decir, converitr la función en una gui, mi problema es que no se como reutilizar mi código, se puede hacer o tendría que empezar desde cero tomando este como referencia???


perdón por el tochaco, y gracias de antemano
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
Imágen de perfil de Dave

hacer una GUI a traves de un programa existente

Publicado por Dave (934 intervenciones) el 07/10/2014 23:01:13
Hola Feli;

Te ofrezco mis servicios de programación, si deseas puedes contactarme vía e-mail o Skype y conversamos sobre la factibilidad de brindarte mis servicios.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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