Help with a piece of code
Mostrar comentarios más antiguos
Hey all, I'm working on a school project that's about changing the order of characters in a binary array. In the process of writing it, I found a bit of code online to help me:
v = sprintf('%d', array3)
endarray = v - '0'
Basically, what this does is it takes the value of array3, which for example is [1011010] and creates a variable endarray, which in turn becomes [1 0 1 1 0 1 0]. When I implemented this piece of code I didn't quite know how it functioned, and it wasn't explained on the page where I found it, so I decided to go back to it later. Unfortunately I still haven't figured it out. I can't wrap my head around the combinations of sprintf, %d, and the -'0'.
Any help with understanding these two lines would be greatly appreciated.
1 comentario
Pal Szabo
el 21 de Sept. de 2017
I recommend to replace "Help with a piece of code" with something more meaningful
Respuesta aceptada
Más respuestas (1)
Generating a "binary" (logical) array:
a = rand(10,1) > 0.5;
Transforming the binary array into a string. v is a character array.
v = sprintf('%d', a)
Transforming the string into a numeric array:
endarray = v - '0'
Matlab does implicit conversions. When you do arithmetic operation with characters, it transforms them into double and then performs the operations.
'0' - 48
Please note that all that is unnecessary if you want an array of doubles from a logical array. You could just have:
endarray = double(a)
2 comentarios
Guillaume
el 21 de Sept. de 2017
The starting point is not a logical array but a binary number encoded as a decimal, e.g.
a = 1011010;
Hence the trip through a char array to get the digits of that decimal number.
José-Luis
el 21 de Sept. de 2017
Thanks. I was wrong but in essence sort of right.
Definitely maybe.
Categorías
Más información sobre Characters and Strings en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!