Calling previous iterations values from an matrix

5 vues (au cours des 30 derniers jours)
Mukund
Mukund le 25 Juin 2017
Commenté : Joshua le 28 Juin 2017
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 commentaires
Mukund
Mukund le 27 Juin 2017
Modifié(e) : Mukund le 27 Juin 2017
Thanks Joshua, for correcting my code on b_max and iteration.Through second fprintf command, obtain maximum row sum, the row number that gives maximum sum, and the elements in that row. 1. Obtain matrix A by random numbers, for predefined no. of iterations 2. Obtain row sum of elements 3. Check if max row sum in consecutive iterations are closer, say 0.01. 4. Display iteration no. required, max value of row sum, row number and elements in that row.
Joshua
Joshua le 28 Juin 2017
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

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by