Calling previous iterations values from an matrix
조회 수: 4 (최근 30일)
이전 댓글 표시
when I run the code, "index exceeds matrix dimensions" error occurs. My aim is to find maximum row sum and when difference between max value of earlier iteration and current iteration are close (defined by tolerance) then iteration should stop. I am not able to locate error and yet thinking how to code.Can you please tell me the correct code.
for k=1:10 % Main iteration Loop
for i=1:5 % For matrix creation
for j=1:5
A(i,j)=rand % Matrix
end
end
b=zeros(1, 5)
for i=1:5
b=b+A(i,:) % Row sum
end
[b_max, index]=max(b) % find and fprintf of maximum row sum, find its row number and its elements
if b_max(i)-b_max(i-1)<=0.1 % is it a correct way to call previous iteration values
fprintf('iterations taken=%d',k)
fprintf('max value=%14.4f of row% with elements (x1,..,5)=%4.4f',b_max(iteration), index(iteration), A(k,:))
end
end
댓글 수: 3
Joshua
2017년 6월 28일
mukund,
Is this maybe what you are looking for? The loop now compares consecutive iterations to each other. Also, I added a third dimension to A so you could store A for each iteration. I still don't think the text output is quite what you want though.
iteration=10;
for k=1:iteration % Main iteration Loop
for i=1:5 % For matrix creation
for j=1:5
A(i,j,k)=rand; % Matrix
end
end
b=sum(A(:,:,k));
b_max(k)=max(b); % find and fprintf of maximum row sum, find its row number and its elements
end
for m=2:length(b_max)
if abs(b_max(m)-b_max(m-1))<=10
fprintf('iterations taken=%d\n',iteration)
fprintf('max value=%14.4f of row\n% with elements (x1,..,5)=%4.4f',b_max(m), m, A(:,:,m))
end
end
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!