Please explain the following line of code

1 visualización (últimos 30 días)
Adnaan
Adnaan el 16 de Sept. de 2019
Comentada: Adnaan el 17 de Sept. de 2019
Please explain the following line of code:
o(2.*[1:floor(D/2)]-1)=-32
where
o=-30+60*rand(1,D);

Respuesta aceptada

Guillaume
Guillaume el 16 de Sept. de 2019
What couldn't you run the code and see what it does?
Your line of code is just a convoluted of doing:
o(1:2:end) = -32
which basically puts 32 in all the odd indices of o.
  3 comentarios
Guillaume
Guillaume el 16 de Sept. de 2019
There's nothing special about it. D is the length of o. The line creates the vector 1:floor(D/2) which is thus 1:floor(end/2) with respect to o. It them multiplies that vector by 2, so it makes the vector 2, 4, 6, ..., floor(end/2)*2 == end (or end-1). It then subtract 1 from that, so you get 1, 3, 5, ... end. That vector is then used to index o. Indexed values are assigned -32.
As I said, it just an inefficient and obscure way of doing:
o(1:2:end) = -32;
Don't use that original code. There is nothing useful about it.
Adnaan
Adnaan el 17 de Sept. de 2019
Thank you very much indeed. I am trying to learn language. So, get stuck some times at such obscure codes. I am grate ful for your help.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by