Taking An Average of Multiple Outputs From For Loop
11 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
C W
le 4 Avr 2020
Réponse apportée : Danika
le 10 Août 2023
I am generating a for loop which is able to take the average and SD of randomly generated 10x10 matrices 10 times (without using mean and std) with the following:
for it = 1:10
A=randn(10);
% Calculate Sum
S=sum(A,'all');
% Divide by the Number N in the Matrix to Find the Mean
M=(S/(length(A)));
display(M);
% Find variance
sum1=0;
for i=1: length(A)
sum1=sum1+ (A(i)-M)^2;
end
V=sum1/length(A);
display(V);
SD=sqrt(V);
display(SD);
end
I need to be able to calculate the AVERAGE mean and SD of the 10 outputs without doing it by hand. I tried to do this by attempting to take mean(M) etc. and it gives only the last number. How can I take the mean of every returned M value?
0 commentaires
Réponse acceptée
Sriram Tadavarty
le 4 Avr 2020
Hi Celeste,
You can take the mean of every reuterned M value, if you store the calculate M value in an array. The code overwrites the M value for each iteration it. So, update the code as below:
for it = 1:10
A=randn(10);
% Calculate Sum
S=sum(A,'all');
% Divide by the Number N in the Matrix to Find the Mean
M(it)=(S/(length(A)));
display(M(it));
% Find variance
sum1=0;
for i=1: length(A)
sum1=sum1+ (A(i)-M(it))^2;
end
V(it)=sum1/length(A);
display(V(it));
SD(it)=sqrt(V(it));
display(SD(it));
end
% M, V, and SD contains the output of each iteration. Then, apply mean as below
meanM = mean(M);
meanSD = mean(SD);
Hope this helps.
Regards,
Sriram
2 commentaires
Sriram Tadavarty
le 4 Avr 2020
While calculating Variance(it), you used sum1, instead of sum2. You do not need to use Variance(it), instead Variance variable should be good. If you index it with it, it will form an array. I think that is not what you want.
Hope this helps.
Regards,
Sriram
Plus de réponses (2)
C W
le 4 Avr 2020
3 commentaires
Sriram Tadavarty
le 4 Avr 2020
Yes, they will be overwritten. To perform that task, you can use another for loop on top this for each size of matrix, and then store the variables in cell array with each element corresponding to different size of matrix.
Danika
le 10 Août 2023
% Variables
x = [1.8 3.6 5.4 7.2];
fprintf('x =');
disp(x);
% For Loop
for k = 1:length(x);
fprintf('Element %0.0f is: %0.1f \n', k, x(k));
end
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!