How can I remove for loop in the following code that change the entries of a given vector?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello, I am trying to vectorize the following simple code
if true
A=[-1;3;0;-4];
B=zeros(size(A));
for i=1:4
if A(i)<0
B(i)=-(A(i));
elseif A(i)==0
B(i)=1;
else
B(i)=A(i);
end
B=B(:);
end
end
Please, how do I write the above code in such a way that there is no for loop, and still it works?
댓글 수: 2
Matt J
2018년 1월 7일
Please indent your code, but not your text. It makes your post hard to read, otherwise.
채택된 답변
Star Strider
2018년 1월 7일
Try this:
A=[-1;3;-2;-4];
B = A;
B(A<0) = -A(A<0)
댓글 수: 6
Star Strider
2018년 1월 7일
Note that it is necessary to determine the number of zeros, so the vector of non-zero values that replaces them is the same size. I used random single-digit positive integers, although any vector with the same number of non-zero values as there are zero values in the vector will work.
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!