Using for loops in order to find average of matrix

Hi I have a 1000x100000 matrix.
I'd like to know the average of the numbers in each column, so that's 100000 values I'm looking for.
I can use the mean() command, and I'm trying to get this done using for loop and preallocation. What i have atm:
mu = 2;
SD = 3;
m = 1000;
n = 100000;
random_matrix = randn(m,n)*SD + mu;
a=zeros(1,n);
for k=1:m
for h=1:n
a(k,h) = means(random_matrix(k,h));
end
end
I dont know whats wrong arrgh. Can someone help me? I think i am not wrong at all, but my program does not stop running...
Thanks in advance!

 Accepted Answer

You can use mean to average all values in a certain direction.
mu = 2;
SD = 3;
m = 1000;
n = 100000;
random_matrix = randn(m,n)*SD + mu;
a=mean(random_matrix,1);

5 Comments

ok, thank you! The thing is, i want to use a loop. Do you know how i get these values using a loop?
You can do the same operation by indexing for the entire column, rather than specific individual values.
a = zeros(1,n);
for i = 1:n
a(i) = mean(random_matrix(:,i));
end
Thank you very much! that helped me a lot!
It worked for every case exept this one:
zscored1=zeros(m,n);
tic;
for i = 1:n
zscored1(i) = (random_matrix(:,i) - means1) ./ SDs1;
end
x(3)=toc;
It says "Unable to perform assignment because the left and right sides have a different number of elements." Do you know whats wrong?
It means that the size of random_matrix(:,i), means1, and SDs1 don't agree. Either means1 and SDs1 need to be single elements or they need to be the same size as random_matrix(:,i).

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!