MATLAB Answers

Adnaan
0

Please explain the following line of code

Asked by Adnaan
on 16 Sep 2019
Latest activity Commented on by Adnaan
on 17 Sep 2019
Please explain the following line of code:
o(2.*[1:floor(D/2)]-1)=-32
where
o=-30+60*rand(1,D);

  0 Comments

Sign in to comment.

1 Answer

Answer by Guillaume
on 16 Sep 2019
 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.