Effacer les filtres
Effacer les filtres

How to calculate average of certain value in a matrix?

3 vues (au cours des 30 derniers jours)
afrya
afrya le 5 Déc 2013
Modifié(e) : Andrei Bobrov le 5 Déc 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

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 5 Déc 2013
Modifié(e) : Andrei Bobrov le 5 Déc 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 commentaires
afrya
afrya le 5 Déc 2013
I didn't understand the syntax
Andrei Bobrov
Andrei Bobrov le 5 Déc 2013
see ADD part

Connectez-vous pour commenter.

Plus de réponses (1)

Omair
Omair le 5 Déc 2013
Modifié(e) : Omair le 5 Déc 2013
Do you mean every 2nd value of A?
mean(A(1:2:end))
  1 commentaire
afrya
afrya le 5 Déc 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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by