SoloCodigo

Programación Específica => Matlab => Mensaje iniciado por: rul32 en Jueves 17 de Junio de 2010, 02:33

Título: Problema con matriz lógia
Publicado por: rul32 en Jueves 17 de Junio de 2010, 02:33
Hola. Estoy haciendo un programa, el cual tengo una matriz lógica de 1 y 0, y quería pasar esa matriz a matriz de caracteres '1' y '0' para poder enviar la matriz a un plc. he realizado este código:

for c = 1: +1: 148
    for d = 1: +1: 148
       
    if matriz1(c,d)==1
         matrizASCI(c,d)='0'
     else
         matrizASCI(c,d)='1'
     end;    
  end;
  end;
Pero tarda muchísimo en realizar esta operación, alguien sabe porque es tan lento? hay alguna instrucción mas rápida? si alguien me puede ayudar se lo agradecería.
Un saludo.
Título: Re: Problema con matriz lógia
Publicado por: jjasso5 en Sábado 19 de Junio de 2010, 07:30
Intenta mat2str (matriz a string).
Por ejemplo:

m = [0 1  1;
0 1 0;
1 1 0]
 
ms = mat2str(m)

Sin embargo, el resultado asci sería
ms = [0 1 1;0 1 0;1 1 0]

que incluye espacios, corchetes y puntos y coma.
Serían 19 caracteres en ese vector-string.
Puedes manipularlo quitando lo que corresponda...
Título: Re: Problema con matriz lógia
Publicado por: rul32 en Sábado 19 de Junio de 2010, 18:18
Gracias por la respuesta. Pero he probado ms = mat2str(matriz1) y me genera un vector:

ms =

[false true true true true true ............true]

Habría la posibilidad de que fuera ?

ms =

[0 1 1 1 1 1 ............1] siendo los 1 y 0 caracteres

Un saludo.
Título: Re: Problema con matriz lógia
Publicado por: jjasso5 en Domingo 20 de Junio de 2010, 04:16
Si tienes:

mlogic = [false true true; true true false; false false true]

Lo puedes manipular así:

m(mlogic == true) = 1;
m(mlogic == false) = 0;
mascii = mat2str(m)
Título: Re: Problema con matriz lógia
Publicado por: Richi254 en Miércoles 23 de Junio de 2010, 12:53
prueba haciendo esto:

char(matriz1)

y listo.

Un saludo
Título: Re: Problema con matriz lógia
Publicado por: rul32 en Lunes 28 de Junio de 2010, 20:28
Hola.
Gracias por las respuestas.
la de char(matriz1): esta no funciona, matlab dice que no se puede pasar de matriz lógica a char:

??? Error using ==> char
Conversion to char from logical is not possible.

Esta respuesta si que funciona, y los tiempos de ejecución son razonables:

m(mlogic == true) = 1;
m(mlogic == false) = 0;
mascii = mat2str(m)

Un saludo.