Problem with the mean of index

3 visualizzazioni (ultimi 30 giorni)
Sophia
Sophia il 30 Mar 2016
Modificato: Sophia il 30 Mar 2016
% tr(i,j,ni) is 361*361*432
t_r = zeros(361,361,35);
ind=10:16;
for t=1:(ni/12)-1;
if t<=34
* *mean_tr* = mean(tr(i,j,ind));*
t_r(i,j,t) = mean_tr;
ind = ind + 12;
else
end
end
mean_winter_sid = mean(t_r,3);
  4 Commenti
Star Strider
Star Strider il 30 Mar 2016
Could it possibly be that:
mean(tr(i,j,ind))
are zero?
For example:
q = mean([-3:3])
q =
0.0000e+000
Sophia
Sophia il 30 Mar 2016
I tried
ind = 10:16;
mean_tr = mean(tr(i,j,ind));
*It is showing zeros, but this should not be the case*

Accedi per commentare.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 30 Mar 2016
You can calculate the mean without a for loop
A=rand(361,361,432);
mina=mean(A(:)) % the mean off all the matrix
min1=mean(A,1); % dimension 1
min2=mean(A,2); % dimension 2
min3=mean(A,3); % dimension 3
  4 Commenti
Azzi Abdelmalek
Azzi Abdelmalek il 30 Mar 2016
use
a = tr(1:361,1:361,ind);
Sophia
Sophia il 30 Mar 2016
Modificato: Sophia il 30 Mar 2016
Its working , thanks Azzi
ind=10:16;
for t=1:(ni/12)-1;
if t<=34
a = tr(1:361,1:361,ind);
mean_tr = mean(a,3);
t_r(:,:,t) = mean_tr;
ind = ind + 12;
else
end
end

Accedi per commentare.

Più risposte (1)

Chad Greene
Chad Greene il 30 Mar 2016
Do the values of indices i and j ever change?
Can you describe in words what you are trying to do? I have a feeling it can be done much more simply and efficiently without loops.
  1 Commento
Sophia
Sophia il 30 Mar 2016
I have a 361*361*432 matrix that describes the 361*361 size monthly images for 36 years.. So i have 432 matrices, i am trying to find the average over just the winter months, say Oct to April (10:16)

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