Please explain the following line of code

Please explain the following line of code:
o(2.*[1:floor(D/2)]-1)=-32
where
o=-30+60*rand(1,D);

 Accepted Answer

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 Comments

Could you please explain how does this code works, even if it is convoluted of doing o(1:2:end) = -32? D are number of dimensions that could 30 or 50.
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.
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.

Sign in to comment.

More Answers (0)

Asked:

on 16 Sep 2019

Commented:

on 17 Sep 2019

Community Treasure Hunt

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

Start Hunting!