Please explain the following line of code
조회 수: 1 (최근 30일)
이전 댓글 표시
Please explain the following line of code:
o(2.*[1:floor(D/2)]-1)=-32
where
o=-30+60*rand(1,D);
댓글 수: 0
채택된 답변
Guillaume
2019년 9월 16일
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
Guillaume
2019년 9월 16일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!