Hello! I'm looking for a function to get the mean of two (or more) columns:
A = 1 2 3
4 5 6
7 8 9
f(A) =
1.5000 2.5000
4.5000 5.5000
7.5000 8.5000
How can I do that in a simple way, for a generic matrix? Thank you.

 Accepted Answer

More Answers (2)

sixwwwwww
sixwwwwww on 13 Oct 2013
Edited: sixwwwwww on 13 Oct 2013
Dear Alessandro, you can use MATLAB function "mean" for this purpose. Here is description: http://www.mathworks.com/help/matlab/ref/mean.html. In Your case just use
mean(A)

6 Comments

I don't think this is the function I need... mean(A) will do the mean of each column, but what I want is the mean of all the column 2 by 2. I do this in this way, but it is not so good:
for k = 1:3
avgA(:,k) = (A(:,k) + A(:,k+1))/2;
end
You need mean of two consecutive elements in a row? For example,
A = [1 2 3 4]
You need
meanA = [1.5 2.5 3.5]
Is it what you need?
Yes, but the same thing for all the column of a matrix:
A = 1 <-> 2 <-> 3
4 <-> 5 <-> 6
7 <-> 8 <-> 9
f(A) =
1.5000 2.5000
4.5000 5.5000
7.5000 8.5000
sixwwwwww
sixwwwwww on 13 Oct 2013
Edited: sixwwwwww on 13 Oct 2013
Here is an example code for this:
A = rand(3);
[m, n] = size(A);
for i = 1:m
for j = 1:n - 1
A_avg(i, j) = (A(i, j) + A(i, j + 1))/2;
end
end
disp(A)
disp(A_avg)
Is it ok?
Yes, this is what I'm trying to do :D I don't want to bug you, but I'm trying to do this with matrix indexing, because I already do this with a loop, but I have very big matrix and the same operation to be done on different matrix of different sizes...
I think in anyway you will need to use at least one for loop. However if I will have better idea then I will come back to it

Sign in to comment.

Jan
Jan on 13 Oct 2013
B = (A(1:end-1) + A(2:end)) * 0.5

Categories

Community Treasure Hunt

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

Start Hunting!