HOW TO AVOID OVERWRITING WITH COMBINED FOR/IF LOOPS
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello everybody ;
I have a problem with combinaison of loops for and if.
Let's say that I have this matrix which is combined of positiv and negativ numbers.
A=[ 1 4 7 -8 -1 -7; -2 1 3 4 5 9; 1 2 5 -8 -7 4;1 2 4 -4 7 -2; -3 5 -7 -1 1 1]
If I want to set a condition to every element depending on its sign, and add 3 for negative numbers while substracting 7 to positive numbers
I wrote then the following code
B=zeros(size(A))
for i=1:length(A)
if A(i)<0
B(i)=A(i)+3
else
B(i)=A(i)-7
end
end
the problem is the overwriting of the matrix B (which I don't understand why) and the non-saving of the results also.
Any help please
thank you
댓글 수: 0
채택된 답변
Jan
2017년 3월 3일
편집: Jan
2017년 3월 3일
length(A) is 6, so you process the first 6 elements only. To process the complete matrix:
for i = 1:numel(A)
...
By the way: a vectorized version:
B = A + 3;
B(A >= 0) = A(A >= 0) - 10;
Or:
B = zeros(size(A));
match = (A < 0);
B(match ) = A(match) + 3;
B(~match ) = A(~match ) - 7;
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!