Borrar filtros
Borrar filtros

How to calculate average of certain value in a matrix?

3 visualizaciones (últimos 30 días)
afrya
afrya el 5 de Dic. de 2013
Editada: Andrei Bobrov el 5 de Dic. de 2013
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

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 5 de Dic. de 2013
Editada: Andrei Bobrov el 5 de Dic. de 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 comentarios
afrya
afrya el 5 de Dic. de 2013
I didn't understand the syntax

Iniciar sesión para comentar.

Más respuestas (1)

Omair
Omair el 5 de Dic. de 2013
Editada: Omair el 5 de Dic. de 2013
Do you mean every 2nd value of A?
mean(A(1:2:end))
  1 comentario
afrya
afrya el 5 de Dic. de 2013
I mean,how to calculate every 2 values of A At the end, you'll get 4 averages in the case of the exemple

Iniciar sesión para comentar.

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by