FOR loop overwrites values
조회 수: 9 (최근 30일)
이전 댓글 표시
Hi, I have the nested FOR loops here-under and I want to save all the outputs of the "P_current" variable in a multidimensional array P(mm, kk, pp). Problem is; the values of P(mm, kk, pp) get overwritten and only the values which result from the last iteration of the FOR loop "for ww = 1:nwall" stay. Let me know if you need the embedded functions' codes, though I believe that it doesn't matter.
for mm = 1:nrx_x
for kk = 1:nrx_y
prx_current = [X(mm, kk); Y(mm, kk)];
for pp = 1:ntx
ptx_current = ptx(:, pp);
d = vmag(prx_current, ptx(:, pp));
d(d==0) = eps;
P_current = Pt .* (lambda ./ (4*pi.*d)).^2;
d(mm,kk,pp) = d;
for ww = 1: nwall
x = intersect3 (wwallStart(:,ww), wwallEnd(:,ww), ptx(:,pp), prx_current);
if x(1,1) >= 0 && x(1,1) <= 1 && x(2,1) >= 0 && x(2,1) <=1
P(mm, kk, pp) = P_current * gwall;
else
P(mm, kk, pp) = P_current;
end
end
end
end
end
댓글 수: 0
답변 (1개)
Stephen23
2017년 3월 29일
편집: Stephen23
2017년 3월 29일
There are four loops, and only three indices are used:
for mm = ...
for kk = ...
for pp = ...
for ww = ...
P(mm, kk, pp) = ...
end
end
end
end
Of course only the last ww value appears in the output, because you never use the ww index to allocate to different locations of your output array: every ww iteration is allocated to the same location in the array.
댓글 수: 3
참고 항목
카테고리
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!