How to calculate average of certain value in a matrix?

5 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 5 Dic 2013
Modificato: Andrei Bobrov il 5 Dic 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 Commenti

Accedi per commentare.

Più risposte (1)

Omair
Omair il 5 Dic 2013
Modificato: Omair il 5 Dic 2013
Do you mean every 2nd value of A?
mean(A(1:2:end))
  1 Commento
afrya
afrya il 5 Dic 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

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by