Conditional replacement of array values from another array
조회 수: 12 (최근 30일)
이전 댓글 표시
Hello,
I'm trying to resolve what I thought would be a simple issue. To simplify the problem, I have two matrices A and B,
I want to write a loop that scans for values in A that are 500 and then replace then in order with the values from B. I tried the included code, but it just didn't work out.
Any help would be appreciated!
A = [500; 500; 40; 50; 500];
B = [20; 30; 60]
for n = 1:5
for m = 1:3
if A(n,1) == 500
A(n,1) = B(m,1);
else
A(n,1) = A(n,1);
end
end
end
%Desired result is A = [20; 30; 40; 50; 60]
댓글 수: 0
답변 (1개)
Tommy
2020년 4월 16일
Do you need a loop?
If you know there are exactly as many 500s in A as there are values in B:
A(A==500) = B;
If there may be more values in B:
A(A==500) = B(1:sum(A==500));
If there may be more 500s in A:
A(find(A==500, numel(B))) = B;
If you can't be sure:
A(find(A==500, numel(B))) = B(1:min(numel(B), sum(A==500)));
참고 항목
카테고리
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!