SoloCodigo
Programación Específica => Matlab => Mensaje iniciado 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.
-
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...
-
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.
-
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)
-
prueba haciendo esto:
char(matriz1)
y listo.
Un saludo
-
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.