How to calculate average of certain value in a matrix?

Hello, My problem is about how to calculate the average of certain values in a large matrix. I know how to calculate the 1st average of the matrix with matlab, but for the other one I tried with a for loop but I didn't manage to solve the problem.
Example:
calculate the average of every 2 values of A
A=
1
2
3
4
5
6
7
8
Av1=1,5 WITH MATLAB Av1=sum(A(1:2;1),1)./2
Av2=3,5
Av3=5,5
Av4=7,5
I did the following loop but it doesn't work :
for i=1:3
for k=2:4
Av=sum(A(i*2+1:2*k,1),1)./2
end
end
Thank you in advance

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 5 Dez. 2013
Bearbeitet: Andrei Bobrov am 5 Dez. 2013
Av = mean(A([1:2:end;2:2:end]));
or
Av = sum(A([1:2:end;2:2:end]))/2;
ADD
n = 3;
Av = accumarray(floor((n:numel(A)+n-1)/n)',A(:),[],@mean);
or
n=3;
p = reshape([A(:);nan(mod(-numel(A),n),1)],n,[]);
l = isnan(p);
p(l) = 0;
Av = sum(p)./sum(~l);
if rem(numel(A),n) == 0 , just:
Av = mean(reshape(A,n,[]));
if you have Image Processing Toolbox then
Av = blockproc(A,[1 n],@(x)mean(x.data));

3 Kommentare

thank you for your answer ,it works well.Now,how can i do it to calculate for example every 3 values of the matrix?
I didn't understand the syntax
see ADD part

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Omair
Omair am 5 Dez. 2013
Bearbeitet: Omair am 5 Dez. 2013

0 Stimmen

Do you mean every 2nd value of A?
mean(A(1:2:end))

1 Kommentar

I mean,how to calculate every 2 values of A At the end, you'll get 4 averages in the case of the exemple

Melden Sie sich an, um zu kommentieren.

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by