• Lunes 6 de Mayo de 2024, 08:09

Autor Tema:  Entrada De Datos Por Visual De Matlab  (Leído 4540 veces)

AdrianHdez

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Entrada De Datos Por Visual De Matlab
« en: Viernes 25 de Mayo de 2007, 03:35 »
0
Necesito urgente que me expliquen cómo puedo entrar por un edit box u otro control de Matlab una matriz, para luego hacer operaciones con ella. Ya he probado con la función str2num pero no funciona.

Saludos..

kaidok

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Entrada De Datos Por Visual De Matlab
« Respuesta #1 en: Domingo 27 de Mayo de 2007, 19:15 »
0
¿Puedes poner el código por aquí?

Haciendo un str2num a cada elemento individual debería servir la verdad, a mí más o menos así me ha funcionado.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Entrada De Datos Por Visual De Matlab
« Respuesta #2 en: Lunes 28 de Mayo de 2007, 02:55 »
0
Mmm, ¿cómo lo estás intentando?
Podrías, por ejemplo, colocar todos los números separados por un espacio (o algún caracter que tú definas) en un editbox, luego obtenerlos desde la propiedad 'String', lo que obtienes es una celda, úsala como string y sepárala con strtok, así puedes obtener cada uno de los elementos separados por espacios (u otro caracter). Claro, cada elemento será un string por lo que tienes que usar str2num para pasarlo a la matriz (si es numérica).

Suerte.
La imaginación es el límite.
Hardware & Software | Mexchip

AdrianHdez

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Entrada De Datos Por Visual De Matlab
« Respuesta #3 en: Lunes 28 de Mayo de 2007, 02:57 »
0
Mira esto es más o menos un ejemplo:

A =str2num(get(handles.edit26,'String'));
B =str2num(get(handles.edit27,'String'));
C = A*B
set(handles.edit28, 'String',num2str©);


y me da este error, he probado entrando por el edit de muchas formas, por ejemplo [1 2 3], [1, 2, 3], '1 2 3' pero no pasa nada.



??? Error using ==> str2num
Requires string or character array input.

Error in ==> C:\Documents and Settings\docencia\Desktop\aaa\example.m (pushbutton1_Callback)
On line 162  ==> A =str2num(get(handles.edit26,'String'));

Error in ==> C:\MATLAB6p5\toolbox\matlab\uitools\gui_mainfcn.m
On line 66  ==>         feval(varargin{:});

Error in ==> C:\Documents and Settings\docencia\Desktop\aaa\example.m
On line 42  ==>     gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback.

kaidok

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Entrada De Datos Por Visual De Matlab
« Respuesta #4 en: Lunes 28 de Mayo de 2007, 10:15 »
0
Es que un str2num puede convertir un sólo número no una matriz entera, lo mejor es que pruebes lo que ha dicho Geo.

AdrianHdez

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Entrada De Datos Por Visual De Matlab
« Respuesta #5 en: Lunes 28 de Mayo de 2007, 15:53 »
0
Si revisas bien la ayuda de Matlab comprobarás que es así, en la consola entra una matriz de string y luego str2num para que veas lo que ocurre. Los comandos que te permiten el trabajo con numeros son str2double y str2int, etc.

Saludos...

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Entrada De Datos Por Visual De Matlab
« Respuesta #6 en: Martes 29 de Mayo de 2007, 00:15 »
0
No puedes hacer esto:

Cita de: "AdrianHdez"
A =str2num(get(handles.edit26,'String'));
B =str2num(get(handles.edit27,'String'));
C = A*B
set(handles.edit28, 'String',num2str©);
por esto (atención a los mensajes de error, normalmente ahí ves el problema):

Cita de: "AdrianHdez"
??? Error using ==> str2num
Requires string or character array input.

Antes lo había apuntado:
Cita de: "Geo"
luego obtenerlos desde la propiedad 'String', lo que obtienes es una celda, úsala como string y sepárala con strtok, así puedes obtener cada uno de los elementos separados por espacios (u otro caracter).

Lo que intentas hacer, lo puedes conseguir así:
Código: Text
  1.  
  2. % Obtiene el contenido del cuadro de texto, el resultado es una celda (cell)
  3. aCelda = get( handles.txtNumeroA, 'String' );
  4. % Es una celda de string con un solo elemento, obtenemos su contenido.
  5. aString = aCelda{ 1, 1 };
  6. % Ahora si podemos convertirlo a número con str2num
  7. aNum = str2num( aString );
  8.  
  9. % Lo mismo para el segundo número
  10. bCelda = get( handles.txtNumeroB, 'String' );
  11. bNum = str2num( bCelda{ 1, 1} );
  12.  
  13. resultado = aNum * bNum;
  14. put( handles.txtResultado, 'String', num2str( resultado );
  15.  
  16.  
Como te imaginarás, txtNumeroA, txtNumeroB y txtResultado son cuadros de texto :).

Creo que ya no necesitas lo de obtener una matriz de un sólo cuadro de texto (para eso si usarías strtok), pero por si acaso, el código a continuación haría lo mismo que el anterior pero leyendo los dos números a multiplicar del mismo cuadro de texto separados por un espacio.
Código: Text
  1.  
  2. textoCelda = get( handles.txtMatriz, 'String' )
  3. textoString = textoCelda{ 1,1 }
  4.  
  5. [ s, textoString ] = strtok( textoString )
  6. a = str2num( s );
  7. [ s, textoString ] = strtok( textoString )
  8. b = str2num( s );
  9.  
  10. set( handles.txtResultado, 'String', num2str( a * b ) );
  11.  
  12.  

Suerte.
La imaginación es el límite.
Hardware & Software | Mexchip