Matlab - Como anexar informacion a una estructura continuamente

   
Vista:

Como anexar informacion a una estructura continuamente

Publicado por Felix R (28 intervenciones) el 22/10/2015 18:38:49
Tengo el siguiente problema o pregunta...

Se que al hacer lo siguiente creare una estructura denominada 'Datos'

1
2
3
Datos.Nombre=' '
Datos.Cedula=[]
Datos.TLF=[]

Se que tengo 3 parámetros dentro de 'Datos' .

Ahora quisiera agregarle información dándole clic a un Botón que saca la información de
3 editText

1
2
3
4
5
6
7
8
9
10
11
12
13
a=get(handles.edit1,'string')
b=get(handles.edit2,'string')
c=get(handles.edit3,'string')
 
if isempty(Datos(1))
Datos(1).Nombre=a
Datos(1).Cedula=b
Datos(1).TLF=c
else
Datos(2).Nombre=a
Datos(2).Cedula=b
Datos(2).TLF=c
end


La cuestión es que quiero que la estructura 'Datos' agregue automáticamente nuevos (Nombres Cédulas TLF) al yo darle clic al botón y estos se guarden Uno tras otros.. pues pueden ser miles.


Gracias de antemano (k)
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 Royeth

Como anexar informacion a una estructura continuamente

Publicado por Royeth jesus.royeth@gmail.com (758 intervenciones) el 22/10/2015 19:21:42
bueno te recomiendo que mejor agregues la información continuamente en los campos llamados y no que cada vez que vayas a agregar un nuevo dato crees una nueva estructura , primero porque cada campo de una estructura vacío ocupa un espacio en la memoria de 176 Bytes , es decir que tu estructura con 3 campos pesa 528 Bytes y pues hacer un array de estructuras es más pesado que tener arrays en cada campo llamado , ahora que veas el ejemplo podrás verlo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function hola
Datos.nombre='';
Datos.cedula=[];
Datos.tlf=[];
p=dialog('WindowStyle','normal');
for k=1:3
t(k)=uicontrol(p,'Style','edit','String','','Position',[100*k 60 100 30]);
end
uicontrol(p,'Style','pushbutton','String','ok','Position',[430 60 100 30],'Callback',{@llam,t},'UserData',Datos);
end
function llam(sm,~,t)
Datos=get(sm,'UserData');
a=get(t(1),'String');
b=str2double(get(t(2),'String'));
c=str2double(get(t(3),'String'));
Datos.nombre{end+1}=a;
Datos.cedula(end+1)=b;
Datos.tlf(end+1)=c;
set(sm,'UserData',Datos)
disp(Datos)
end


espero te sea de ayuda
https://www.facebook.com/royethmatlab/
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

Como anexar informacion a una estructura continuamente

Publicado por Felix R (28 intervenciones) el 22/10/2015 19:29:02
okok voy a probar a ver, la cuestion es que yo no programo los gui's como la mayoria de aki

Yo uso la interface GUI

Gracias Royeth
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

Como anexar informacion a una estructura continuamente

Publicado por Felix R (28 intervenciones) el 22/10/2015 19:39:06
La cuestion esta que al iniciar de nuevo lo que me mandastes .. no guarda lo previamente hecho

Me refiero.. si ingreso unos datos, se me guarda momentaneamente.. si cierro el programa y lo vuelvo abrir
Ya abria perdido la informacion que habia guardado previamente
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
Imágen de perfil de Royeth

Como anexar informacion a una estructura continuamente

Publicado por Royeth jesus.royeth@gmail.com (758 intervenciones) el 22/10/2015 20:16:23
pues para eso debes usar lo que es save y ya puedes cerrar y se te van a quedar guardadas :

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
function hola
try
load('bdt.mat');
catch
Datos.nombre='';
Datos.cedula=[];
Datos.tlf=[];
end
p=dialog('WindowStyle','normal');
f=uicontrol(p,'Style','pushbutton','String','ok','Position',[430 60 100 30],'UserData',Datos);
set(p,'DeleteFcn',{@guar,f})
for k=1:3
t(k)=uicontrol(p,'Style','edit','String','','Position',[100*k 60 100 30]);
end
set(f,'Callback',{@llam,t})
end
function llam(sm,~,t)
Datos=get(sm,'UserData');
a=get(t(1),'String');
b=str2double(get(t(2),'String'));
c=str2double(get(t(3),'String'));
Datos.nombre{end+1}=a;
Datos.cedula(end+1)=b;
Datos.tlf(end+1)=c;
set(sm,'UserData',Datos)
disp(Datos)
end
function guar(~,~,f)
Datos=get(f,'UserData');
save('bdt.mat','Datos')
end


saludos
https://www.facebook.com/royethmatlab/
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