Matlab - Vector String

   
Vista:

Vector String

Publicado por Carlos (27 intervenciones) el 01/12/2008 17:52:44
Hola gente!!!

Tengo un problemilla con un vector, el caso es que cojo el String de un Edit Text, que es un vector que ha introducido el usuario, y tengo que controlar que no haya ningún error en los valores que ha introducido, es decir que no haya letras...

No sé porque motivo pero no consigo hacerlo, he usado isnan, ischar....pero no me lo coge, no se si el problema puede estar en cómo hago el get para obtener el vector del handles, os pongo lo que he hecho para ver qué puede estar mal....

vect_freq = str2num(get(handles.freq_vect, 'String'));
if long_aten || long_freq == 0
for i=1:long_freq
if ischar(vect_aten(i))

El caso es que no entra en el segundo if nunca, espero que alguien me puede decir cómo analizo uno a uno los elementos del vector y cómo detectar si hay algún char....

Muchas gracias de antemano por vuestro tiempo!!!!!

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:Vector String

Publicado por Kike (304 intervenciones) el 01/12/2008 20:27:00
vect_freq = str2num(get(handles.freq_vect, 'String'));
if length(vect_freq) == 0 % si el usuario digita una letra u otro caracter no válido
msgbox('Ha digitado un caracter no válido. Sólo debe ingresar números.', 'Aviso', 'error');
else % si el usuario digita sólo números
proceso_correcto; % sigue ejecutando el programa
end

Con esto se verifica que sean sólo números. Con un solo caracter no válido (una letra, un signo de admiración, etc.) falla la conversión de string a numeric, dando como resultado una longitud nula para vect_freq. Los caracteres no númericos válidos son: la coma, el espacio en blanco, la i, la j, la &, y los signos de operaciones aritméticas. La i y la j se toman como números complejos.

Por cierto, ¿qué es long_aten y qué es long_freq?
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:Vector String

Publicado por Carlos (27 intervenciones) el 01/12/2008 20:38:38
Lo entiendo, pero el problema es que quiero distinguir entre que el vector esté vacío y que la conversión haya sido errónea, por eso me interesaba ir elemento a elemento para ver si la longitud es cero porque no hay nada o porque se ha insertado un carácter...

El problema es que es complicado recorrer el array, puesto que la longitud es cero, entonces no sé cómo disitinguir esos dos casos...

No sé si me he explicado bien...

long_aten y long_freq son las longitudes de los vectores...

Muchas 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:Vector String

Publicado por Kike (304 intervenciones) el 01/12/2008 22:45:53
Podrías colocar en la GUI un radio button que habilite/deshabilite al edit text donde el usuario ingresa las frecuencias. De esta manera si el radio button tiene valor de 1 (habilitando el edit text) entonces que se lea lo que ha ingresado el usuario; y si el radio button tiene valor cero entonces que omita la parte del edit text (estaría deshabilitado) y que vect_freq sea un vector vacío.
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:Vector String

Publicado por Carlos (27 intervenciones) el 02/12/2008 17:58:58
Así es exactamente cómo lo tengo hecho, el radio button es el que habilita la usuario a introducir el vector, de hecho hay varios radio buttons porque hay varias maneras de ingresar el vector (manual, cargando un archivo .mat y cargando un vector guardado previamente)

Lo que pasa es que no quería dejar nada al azar, y quería tener en cuenta la opción de que un usuario decidiera ingresar el vector pero ingresara uno vacío...los profesores siempre te hacen tener en cuenta las situaciones más extravagantes.

Por eso mi interés en distinguir esas opciones...

Muchas gracias por tu tiempo!!!
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