Please explain the following line of code

1 visualizzazione (ultimi 30 giorni)
Adnaan
Adnaan il 16 Set 2019
Commentato: Adnaan il 17 Set 2019
Please explain the following line of code:
o(2.*[1:floor(D/2)]-1)=-32
where
o=-30+60*rand(1,D);

Risposta accettata

Guillaume
Guillaume il 16 Set 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 Commenti
Guillaume
Guillaume il 16 Set 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 il 17 Set 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.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by