Programación Específica > Matlab
Inicio De Proyecto
Geo:
En MATLAB se trabaja con matrices, los datos contenidos en ellas pueden ser de varios tipos.
Teniendo dos vectores, puedes crear un tercero que sea el resultado de unir los dos primeros así:
--- Código: Text --- >> a = [ 1 2 3 4 ] a = 1 2 3 4 >> b = [ 5 6 7 8 ] b = 5 6 7 8 >> c = [ a b ] c = 1 2 3 4 5 6 7 8 >>
fa61an:
Insisto eso no quiere decir que los concateno, ademas estamos hablado de bits recibidos por el puerto serial.
no es lo mismo
12 que equivale en binario --->00010010
a un array de dos posiciones [1 2] en el cual si representamos cada valor por 8 bits daria
1 ----> 00000001
2 ----> 00000010
Para nada es lo mismo, el echo que el promt de matlab los muestre como si estuvieran juntos para nada lo mismo decir el array [1 2], al numero 12.
El esta hablando que el PLC envía sus datos de a 16 bits y como el puerto serie como máximo maneja 9 bits entonces se le propuso que recibiera dos tramas de a 8 bits y luego los concatene y luego convertilo a double para tener su valor.
El ultimo ejemplo digamos, que el PLC va a enviar el numero 300 por el puerto serial , para hacer esto yo conozco una manera que seria enviar tres bytes de a 8 bits y luego verificar si todo se recibió bien con un byte de checksum.
Esos tres bytes estarían conformados por su equivalente en ASCII "podría ser" de cada cifra.
3 ----- > 0011 0011
0 ----- > 0011 0000
0 ----- > 0011 0000
Y luego se procedería a concatenar cada carácter OJO carácter no bytes, en una sola variable tipo String de valor "300" pero no es lo mismo "CONCATENAR" como tu lo dices en una matriz, de un tipo de dato Llamado Array de la siguiente manera [3 0 0], eso quiere decir que creaste una array con tres posición pero no una sola variable de valor 300
Carlitros82:
--- Cita de: "fa61an" --- Insisto eso no quiere decir que los concateno, ademas estamos hablado de bits recibidos por el puerto serial.
no es lo mismo
12 que equivale en binario --->00010010
a un array de dos posiciones [1 2] en el cual si representamos cada valor por 8 bits daria
1 ----> 00000001
2 ----> 00000010
Para nada es lo mismo, el echo que el promt de matlab los muestre como si estuvieran juntos para nada lo mismo decir el array [1 2], al numero 12.
El esta hablando que el PLC envía sus datos de a 16 bits y como el puerto serie como máximo maneja 9 bits entonces se le propuso que recibiera dos tramas de a 8 bits y luego los concatene y luego convertilo a double para tener su valor.
El ultimo ejemplo digamos, que el PLC va a enviar el numero 300 por el puerto serial , para hacer esto yo conozco una manera que seria enviar tres bytes de a 8 bits y luego verificar si todo se recibió bien con un byte de checksum.
Esos tres bytes estarían conformados por su equivalente en ASCII "podría ser" de cada cifra.
3 ----- > 0011 0011
0 ----- > 0011 0000
0 ----- > 0011 0000
Y luego se procedería a concatenar cada carácter OJO carácter no bytes, en una sola variable tipo String de valor "300" pero no es lo mismo "CONCATENAR" como tu lo dices en una matriz, de un tipo de dato Llamado Array de la siguiente manera [3 0 0], eso quiere decir que creaste una array con tres posición pero no una sola variable de valor 300
--- Fin de la cita ---
Gracias por las contestaciones al final lo he conseguido
A=[dec2bin(B(1)),dec2bin(B(2))];
C=bin2dec(A);
y así concateno 2 numeros decimales.
Ahora me encuentro con la duda de como realizar un complemento a 2. Lo principal sería hacer el complementario al binario pero no se como.
Gracias por la ayuda. Un saludo.
fa61an:
Parece interesante tu metodo lo probrare pero pues con el ejemplo del numero 300 yo lo habia pensado hacer de la siguiente manera
Primero se recibe el caracter '3' se conviente a entero y se multimplica por 100 ("en el caso de que solo se reciban 3 cifras") luesgo se recibe el caracter '0' se convierte a entero y se multiplica por 10....
espero me entiendas la idea
mardedudas:
He lsedo por encima el problema de concatenar.
No se si usando la función "strcat" podría solucionarse el problema.
s=strcat('hola','pepe');
s='holapepe'
si guarda las cadenas de bits en variables y luego usa la función strcat eso se las concatena.
Un saludo.
No se si esto ha servido, aunque ya hayas encontrado la solución.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa