• Sábado 20 de Abril de 2024, 00:01

Autor Tema:  Problema con matriz lógia  (Leído 1922 veces)

rul32

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Problema con matriz lógia
« en: Jueves 17 de Junio de 2010, 02:33 »
0
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.

jjasso5

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Problema con matriz lógia
« Respuesta #1 en: Sábado 19 de Junio de 2010, 07:30 »
0
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...

rul32

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Problema con matriz lógia
« Respuesta #2 en: Sábado 19 de Junio de 2010, 18:18 »
0
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.

jjasso5

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Problema con matriz lógia
« Respuesta #3 en: Domingo 20 de Junio de 2010, 04:16 »
0
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)

Richi254

  • Miembro activo
  • **
  • Mensajes: 56
  • Nacionalidad: es
    • Ver Perfil
Re: Problema con matriz lógia
« Respuesta #4 en: Miércoles 23 de Junio de 2010, 12:53 »
0
prueba haciendo esto:

char(matriz1)

y listo.

Un saludo

rul32

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Problema con matriz lógia
« Respuesta #5 en: Lunes 28 de Junio de 2010, 20:28 »
0
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.