Result of combining multiple matrices turns into int32
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Stijn
el 14 de Nov. de 2014
Comentada: Stijn
el 18 de Nov. de 2014
I have several matrices, which I want to combine into one big matrix:
robotnumber =
1
2
3
4
orientation =
-0.0002
179.9671
0.0020
179.9953
detection =
1 782
1 782
1 782
1 782
detdistance =
0.1533
0.1483
0.1569
0.1647
spacer =
0 0 0
0 0 0
0 0 0
0 0 0
distance =
0 2.1629 0.9540 3.8822
2.1629 0 1.5346 2.1488
0.9540 1.5346 0 3.5705
3.8822 2.1488 3.5705 0
But, if I try the following code:
Robotinfo = [robotnumber,orientation,detection,detdistance,speed,spacer,distance];
All the data goes, apparently, through an int32 function, resulting in:
Robotinfo =

The workspace also says: Robotinfo 4x14 int32, instead of Robotinfo 4x14 single.
Does anyone know what causes this problem?
Thanks!
0 comentarios
Respuesta aceptada
Guillaume
el 14 de Nov. de 2014
Editada: Guillaume
el 14 de Nov. de 2014
Most likely one of your variable is int32. As a result, all the other variables are implicitly converted to int32. Convert it to double before concatenating it.
concat = [dblvar, dblvar, double(int32var)];
rant: Most languages have made the sensible decision that implicit conversions are widening. That is, an implicit conversion will only happen if there is no loss of data (e.g. int8 -> int32, float->double or int->double). Matlab, on the other hand has narrowing conversions. An int32 will get demoted to an int8 with all the loss of data that ensues. Same with double->float or as in your case double->int. Completely absurd!
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrices and Arrays en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!