Matlab - modificar datos ayuda `porfavor

 
Vista:

modificar datos ayuda `porfavor

Publicado por luceraaaaa (119 intervenciones) el 13/07/2009 21:03:26
hola! estoy realizando mi proyecto de fin de carrera y tengo un problemilla. por favor que alguien me ayude que llevo atascada varios dias... no se que hacer!!!

Estoy elaborando un programilla. Tiene un apartado de inputs (datos de entrada), el programa te muestra por defecto unos valores (dependiendo de la combinacion que elijas). es decir: hay 3 combinaciones. la 1 te muestra a=50; b=60; c=80; la combinacion 2 te mustra a=1; b=1; c=1; y la tercera combinacion otros valores. Tengo que crear la opción de poder modificar estos datos. No se como hacerlo!!!!!!!!!!!!!!!!!!!

Estoy trabajando con GUI. Los datos se mustran en un GUI. en un listbox te mustra las distintas combinaciones y hay un boton el cual es MODIFICAR. al pulsarlo nos lleva a una nueva GUI la cual te muestra los datos de la combinacion que hayamos seleccionado y te da la opcion de modificarlos. Me da error a la hora de recoger los datos si no los cambio en la GUI de modificar.

Espero que me hayais entendido con claridad y que alguien me pueda ayudar. POR FAVORR es de vital importanciaaaaaaaaaaaaaaa. NO se me acurre nada mas que probar...

GRACIAS DE ANTEMANO

un saludo
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

RE:modificar datos ayuda `porfavor

Publicado por mapi (14 intervenciones) el 14/07/2009 00:03:37
quizas el problema esta en que no pasas bien los valores entre una gui y otra.
las has puesto como globales???
pk sino no te las va a coger.
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

RE:modificar datos ayuda `porfavor

Publicado por luceraaaa (119 intervenciones) el 14/07/2009 11:39:00
hola mapi!!!!

gracias por contestarme!!!!!!!

lo he intentado como globales pero no me funciona tampoco.....

las variables las tengo almacenadas en un archivo .mat, y las muestro: load ComA .

cuando pulso el boton modificar leo el archivo .mat y lo muestro asi: set(handles.edit1,'string',nombre de la variable). Ahora estoy en el GUI modificar. tengo a=1, b=2, c=3. si modifico todos los valores no hay ningun problema. el problema viene si solo cambio alguno. Por ejemplo, si cambio solo a, a se me guardaria bien pero b y c se me cambian y me da valores como 4.00001 y asi. nose que mas probar.

he intentado hacer con variables globales y lego guardarlas en el archivo .mat pero no me sale...................

¿que puedo inetntar???

gracias.
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

RE:modificar datos ayuda `porfavor

Publicado por mapi (14 intervenciones) el 14/07/2009 12:56:30
bueno...no he trabajado con .mat pero me lo he estado mirando. Deberias encontrar alguna manera de que te lo guarde como entero o double,creo que se puede especificar, y asi no deberia salirte los decimales como si fueran floats.

de todas maneras si me pones un copypaste de como guardas el nuevo valor me ayudaria a ver que puedes probar o cambiar.
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

RE:modificar datos ayuda `porfavor

Publicado por luceraaaaaaa (119 intervenciones) el 14/07/2009 13:32:57
gracias por ayudarme!!!!!!!!!!!!!!!!!!!!!!!!!!!!! estoy mas perdida.............

yo creo que la solucion tambien esta en como introducir los valores al edit text pero esque he probado a cambiar el formato y aun no he encontado la solucion. he probado str2double, num2str, str2num, char, cellstr, no se me ocurre que mas probar!!!!!!

te mando lo que tengo:

para mostrar los valores en los edit text pongo:
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((TENGO UN LISTBOX CON LAS DISTINTAS COMBINACIONES, DE MANERA QUE DEPENDIENDO DE LA QUE ELIJA TENGO UNOS VALORES U OTROS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))).

inf=get(hObject,'value');
gos=get(hObject,'string');

switch inf
case 1
load steel_data_ComA (ASI LEO EL ARCHIVO MAT CORRESPONDIENTE)
%STEEL PLATE
set(handles.text47,'string', hca); (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((VOY MOSTRANDO CADA VARIABLE DONDE QUIERO)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
set(handles.text48,'string', Dca);
set(handles.text49,'string', Eca);
set(handles.text50,'string',nca1);
set(handles.text51,'string', mind1);
set(handles.text52,'string',maxd1);
set(handles.text53,'string', hagu1);
set(handles.text54,'string',nca2);
set(handles.text55,'string', mind2);
set(handles.text56,'string', maxd2);
set(handles.text57,'string', nca3);
set(handles.text58,'string', mind3);
set(handles.text59,'string', maxd3);
set(handles.text60,'string', nca4);
set(handles.text61,'string', mind4);
set(handles.text62,'string', maxd4);
set(handles.text63,'string', hagu234);
set(handles.text64,'string', Dist23);
set(handles.text65,'string', Dist34);
%BOTTOM FLENGE
set(handles.text66,'string', Ab);
set(handles.text67,'string', Eb);
set(handles.text68,'string',Dext_b);
%UPPER FLANGE
set(handles.text69,'string', nMet);
set(handles.text70, 'string', Dbh);
set(handles.text71,'string', tlf);
set(handles.text72,'string', tlft);
set(handles.text73,'string', Dext);
set(handles.text74,'string', Dbcd);
set(handles.text75,'string', Dint);
set(handles.text102,'string', tsh);
%CONNECTORS
set(handles.text76,'string', Diameter);
set(handles.text77,'string', Length);
set(handles.text78,'string', Strength);
set(handles.text79,'string', Nrows);
%ZREINFORCEMENT
set(handles.text80,'string', DiameterZ);
set(handles.text81,'string', percentageZ);
%NOMBRE
set(handles.text100,'string', name);
caso=get(hObject,'value');
save d caso

(((((((((((((((((((((((((((((((((((((((((((((((((((((SI SELECCIONAMOS LA SEGUNDA COMBINACION))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
case 2
load steel_data_ComB
%STEEL PLATE
set(handles.text47,'string', hca);
set(handles.text48,'string', Dca);
set(handles.text49,'string', Eca);
set(handles.text50,'string',nca1);
set(handles.text51,'string', mind1);
set(handles.text52,'string',maxd1);
set(handles.text53,'string', hagu1);
set(handles.text54,'string',nca2);
set(handles.text55,'string', mind2);
set(handles.text56,'string', maxd2);
set(handles.text57,'string', nca3);
set(handles.text58,'string', mind3);
set(handles.text59,'string', maxd3);
set(handles.text60,'string', nca4);
set(handles.text61,'string', mind4);
set(handles.text62,'string', maxd4);
set(handles.text63,'string', hagu234);
set(handles.text64,'string', Dist23);
set(handles.text65,'string', Dist34);
%BOTTOM FLENGE
set(handles.text66,'string', Ab);
set(handles.text67,'string', Eb);
set(handles.text68,'string',Dext_b);
%UPPER FLANGE
set(handles.text69,'string', nMet);
set(handles.text70, 'string', Dbh);
set(handles.text71,'string', tlf);
set(handles.text72,'string', tlft);
set(handles.text73,'string', Dext);
set(handles.text74,'string', Dbcd);
set(handles.text75,'string', Dint);
set(handles.text102,'string', tsh);
%CONNECTORS
set(handles.text76,'string', Diameter);
set(handles.text77,'string', Length);
set(handles.text78,'string', Strength);
set(handles.text79,'string', Nrows);
%ZREINFORCEMENT
set(handles.text80,'string', DiameterZ);
set(handles.text81,'string', percentageZ);
%NOMBRE
set(handles.text100,'string', name);
caso=get(hObject,'value');
save d caso

((((((((((((((((((((((((((((((((((((((((((((((((SI SELECCIONAMOS LA TERCERA COMBINACION))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
case 3
load steel_data_comC
%STEEL PLATE
set(handles.text47,'string', hca);
set(handles.text48,'string', Dca);
set(handles.text49,'string', Eca);
set(handles.text50,'string',nca1);
...............................................

en realidad tengo 10 casos distintos, para que te hagas una idea..........

vale, luego en cada edit text estan las ordenes:

NewStrVal=get(hObject,'String'); %Almacenar valor ingresado
NewVal = str2double(NewStrVal); %Transformar a formato double
handles.edit12=NewVal; %Almacenar en puntero
guidata(hObject,handles);

que me recoge los datos que inserto yo.

luego en el boton de guardar y volver a la otra GUI tengo:

function Ok_Callback(hObject, eventdata, handles)
% hObject handle to Ok (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

%variables: ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ASIGNO EL VALOR DE LAS VARIABLES)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Dext=handles.edit2;
Dbcd=handles.edit3;
Dint=handles.edit10;
tlf=handles.edit4;
tlft=handles.edit5;
Dbh=handles.edit6;
nMet=handles.edit7;
tsh=handles.edit9;
Ab=handles.edit11;
Eb=handles.edit12;
Dext_b=handles.edit14;
DiameterZ=handles.edit15;
percentageZ=handles.edit16;
hca=handles.edit17;
Dca=handles.edit18;
Eca=handles.edit19;
nca1=handles.edit20;
mind1=handles.edit21;
maxd1=handles.edit22;
hagu1=handles.edit23;
nca2=handles.edit24;
mind2=handles.edit25;
maxd2=handles.edit26;
nca3=handles.edit27;
mind3=handles.edit28;
maxd3=handles.edit29;
nca4=handles.edit30;
mind4=handles.edit31;
maxd4=handles.edit32;
hagu234=handles.edit33;
Dist23=handles.edit34;
Dist34=handles.edit35;
Diameter=handles.edit36;
Length=handles.edit37;
Nrows=handles.edit38;
Strength=handles.edit39;
name=handles.edit1;

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((DEEPNDIENDO DEL CASO QUE TENGAMOS SE GUARDAN DE ESTA MANERA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
load d
if caso==1
save steel_data_ComA Ab Dbcd Dbh Dca Dext Dext_b Diameter DiameterZ Dint Dist23...
Dist34 Eb Eca Length Nrows percentageZ Strength hagu1 hagu234 hca maxd1 maxd2 maxd3...
maxd4 mind1 mind2 mind3 mind4 nMet name nca2 nca1 nca3 tlf nca4 tlft tsh;
elseif caso==2
save steel_data_ComB Ab Dbcd Dbh Dca Dext Dext_b Diameter DiameterZ Dint Dist23...
Dist34 Eb Eca Length Nrows percentageZ Strength hagu1 hagu234 hca maxd1 maxd2 maxd3...
maxd4 mind1 mind2 mind3 mind4 nMet name nca2 nca1 nca3 tlf nca4 tlft tsh;
elseif caso==3
save steel_data_ComC Ab Dbcd Dbh Dca Dext Dext_b Diameter DiameterZ Dint Dist23...
Dist34 Eb Eca Length Nrows percentageZ Strength hagu1 hagu234 hca maxd1 maxd2 maxd3...
maxd4 mind1 mind2 mind3 mind4 nMet name nca2 nca1 nca3 tlf nca4 tlft tsh;
elseif caso==4
save steel_data_ComD Ab Dbcd Dbh Dca Dext Dext_b Diameter DiameterZ Dint Dist23...
Dist34 Eb Eca Length Nrows percentageZ Strength hagu1 hagu234 hca maxd1 maxd2 maxd3...
maxd4 mind1 mind2 mind3 mind4 nMet name nca2 nca1 nca3 tlf nca4 tlft tsh;

ESPERO QUE TE HAYA SERVIDO DE AYUDA, A LO MEJOR TE HE LIADO MAS.........................................................

GRACIASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
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

RE:modificar datos ayuda `porfavor

Publicado por mapi (14 intervenciones) el 14/07/2009 13:59:10
NewStrVal=get(hObject,'String'); %Almacenar valor ingresado
NewVal = str2double(NewStrVal); %Transformar a formato double
handles.edit12=NewVal; %Almacenar en puntero
guidata(hObject,handles);


vale, puede que el error este aqui.
cuando recoges de un edit text en realidad no recoges un string, sino un cellarray, es decir un array de strings,no una string a secas.
para pasarlo a una string normal debes hacer:

NewStrVal=get(hObject,'String'); %Almacenar valor ingresado
NewStrVal=char(NewStrVal);%esto te pasa a string

y ahora transformas a double.

prueba a ver.
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

RE:modificar datos ayuda `porfavor

Publicado por luceraaaaaaaaaaaa (119 intervenciones) el 14/07/2009 15:17:24
hola mapi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

he probado no se si hare algo mal pero me vuelven a salir los decimales....los numeros esos raros!!!!!!!!!!!!!!!!!!

¿lo has probado tu????????????

gracias por aclararme lo de los string la verdad yo creo que el error también esta por ahi, pero no hay forma!!!!!

he probado a convertir el cellarray a string y nada. HA introducirlo ene el edit text en forma de cellarray y luego recogerlo y nada.......

seguiré probando haber si doy con la solucion yo creo que el error esta donde me lo has dicho tu pero no funciona de esa manera!!!!!!!

muchas gracias. si se te ocurre algo dime....

si tienes alguna cosilla tambien dime.

GRACIASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
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

RE:modificar datos ayuda `porfavor

Publicado por mapi (14 intervenciones) el 14/07/2009 17:55:01
hola
a ver, no tengo claro donde esta el problema,por eso yo te recomiendo que te pongas chivatos para ir siguiendo lo que hace esta variable. es decir:

NewStrVal=get(hObject,'String'); %Almacenar valor ingresado
NewStrVal=char(NewStrVal);
NewVal = str2double(NewStrVal); %Transformar a formato double
handles.edit12=NewVal; %Almacenar en puntero
disp(handles.edit12);%TE LO MUESTRA POR LA PANTALLA PRINCIPAL DE MATLAB, ESTE ES EL CHIVATO
guidata(hObject,handles);

y asi ves exactqamente que contiene esa variable, y podremos saber si ya desde un principio te guarda mal el numero o es mas adelante. Ves probando a poner estos chivatos aki, luego en a otra gui, antes de hacer el save...
a ver k hay ahi.
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