Using for loops in order to find average of matrix

5 views (last 30 days)
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

Bob Thompson
Bob Thompson on 1 Feb 2021
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
Catayoun Lissa Eleonore Azarm
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?
Bob Thompson
Bob Thompson on 1 Feb 2021
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!