Matlab - De char a matriz, mientras tenga datos en puerto serie.

 
Vista:
sin imagen de perfil
Val: 49
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por jose (26 intervenciones) el 06/08/2019 16:10:45
Buenos dias, ando liado con un problema que no consigo resolver.

Desde arduino envio por puerto serie unos datos y en matlab los recivo como "Char", por diversos problemas solo me funciona bien asi.

El tema es que estos datos tengo que leerlos y convertirlos en numeros con decimales y meterlos en una matriz de 3 columna * N filas, (tantas como datos de tres reciva)

De momento para leer los datos uso esto:

1
2
3
4
5
6
a=fscanf(s,'%s')%%%  %s lo recibo como cararter
%  a=fscanf(s,'%

a =

    '1.00 1.10 1.20;2.00 2.10 2.20;3.00 3.10 3.20;'

luego uso la funcion
Datos=str2num(a) y queda bien,
pero mi problema es que cuando lleno la variable a al enviar muchos datos no logro hacer un blucle para seguir guardandols y poder usar la funcion str2num despues.


¿Alguna idea para solucionar el poblema?

He intentado un bluce que lea los datos del puerto serie, mientras tenga y cada tres los meta en una matriz pero no logro que funcione
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
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 07/08/2019 05:28:34
puedes utilizar la función reshape para que esos datos que recibas independiente del número una vez convertidos a num puedas pasarlo a una matriz de 3 columnas y luego concatenar con un ciclo de forma vertical con vertcat
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
sin imagen de perfil
Val: 49
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por jose (26 intervenciones) el 07/08/2019 12:42:02
Gracias por tu contestación pero el problema lo tengo cuando voy llenando el array inicial
a=fscanf(s,'%s') si tengo mas datos de los que cogen en a necesito hacer un bucle para continuar llenando otro, por ejemplo b..... y asi sucesivamente mientras tenga datos en el puerto serie.

luego ordenarlo como ya los envio con espacios es facil.

Saludos.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 11/08/2019 05:54:09
1
2
3
4
5
Datos=[]
for i=1:2
 a=fscanf(s,'%s')%%%  %s lo recibo como cararter
 Datos=[Datos; str2num(a)]
end
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
sin imagen de perfil
Val: 49
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por jose (26 intervenciones) el 11/08/2019 08:38:50
Gracias. Algo así es lo que he conseguido. Solo que ya que no se mirar si en el puerto serie tengo datos voy a tratar de enviar una variable para ver cua tas veces tengo que repetir el bucle for. 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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 11/08/2019 08:42:08
podría poner parte de su código quitando la comas al final de las lineas para poder ver los valores que arroja al momento de ejecutar.
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
sin imagen de perfil
Val: 49
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

De char a matriz, mientras tenga datos en puerto serie.

Publicado por jose (26 intervenciones) el 11/08/2019 09:28:18
Si eso lo he realizado y voy viendo el proceso. La idea es que MATLAB envían un dato a Arduino. Este ejecuta u. Programa que hace medidas de un proceso. (Que no siempre tarda lo mismo en estabilizarse… por eso no tengo una cifra concreta de ciclos para repetir en for). Mié tras que Arduino hace cosas. MATLAB está a la espera y recibe los datos.
Por esto sería bueno hacer un bucle que mié tras tenga cosas en el buffer MATLAB repita el ciclo de recogerlas y transformarlas. Pero esto no lo he conseguido.

Voy a ir probando para ver que sacó en claro.

Gracias por las ideas y 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