How can I do the average between many vector columns?

on 16 Apr 2014
Latest activity Commented on by Azzi Abdelmalek

Azzi Abdelmalek (view profile)

on 17 Apr 2014
Accepted Answer by José-Luis

José-Luis (view profile)

I have 120 1x500 vector columns, so I can't do it manually. For example, I have the following vector columns, each 1x500 in size:
a1, a2, ......, an, where n=120
I want to do:
(a1 + a2 + ... + an)/n
Thank you very much!

José-Luis (view profile)

on 16 Apr 2014
Edited by José-Luis

José-Luis (view profile)

on 16 Apr 2014

%Creating vectors:
for ii = 1:50
str = ['a' num2str(ii)];
assignin('base',str,rand(100,1));
end
%Preallocating:
your_mat = ones(100,50);
%Putting everything together, this is the part you want if you already have the vectors
for ii = 1:50
str = ['a' num2str(ii)];
your_mat(:,ii) = evalin('base',str);
end
your_val = mean(your_mat(:));
Please accept an answer if it helps you.

on 17 Apr 2014
Thank you for your answer. But the thing is that it gives me just a number, because that's what 'mean' function does, it gives a single number. When I average my 120 500x1 column vectors, namely (a1 + a2 + ... + an)/n, where n=120, it should give me a 500x1 vector column, not a single number.
If you could help further, that would be great! Thanks
lvn

lvn (view profile)

on 17 Apr 2014
Replace the last line of Jose-Luis code with
your_val = mean(your_mat);
Then you will have what you want. However, much better would be to initially read in/or store your data in a matrix, rather than in separate vectors, then you can simply use what Azzi wrote.

Answer by Azzi Abdelmalek

on 16 Apr 2014

mean(A)

Azzi Abdelmalek

on 17 Apr 2014
You can use
mean(A,2)