Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

Issues with the for loop

1 Ansicht (letzte 30 Tage)
Sophia
Sophia am 14 Aug. 2019
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
tt=0;
for i = 1:size(ids_2006,2) * size od ids_2006 is 212*119*177
for j = 1:size(ids_2006,3)
tt=tt+1;
i,j,tt
% size of mean_wint_rho is 119*177
% size of stdv_daily_2006 is 119*177
if (squeeze(ids_2006(tt,:,:)) < (mean_wint_rho(:,:) - 3*stdv_daily_2006(:,:)))
daily_2006 = squeeze(ids_2006(:,i,j));
new_daily_2006(tt,:,:) = daily_2006;
%size of new_daily_2006 should be 212*119*177
else
new_daily_2006(tt,:,:) = NaN;
end
end
end
I want to remove the bias from the daily dataset by removing the points that are three standard deviation from the mean.

Antworten (1)

darova
darova am 15 Aug. 2019
This should work
new_daily_2006 = ids_2006*0;
for i = 1:size(ids_2006,1) %* size od ids_2006 is 212*119*177
% i,j,tt
% size of mean_wint_rho is 119*177
% size of stdv_daily_2006 is 119*177
if (squeeze(ids_2006(i,:,:)) < (mean_wint_rho(:,:) - 3*stdv_daily_2006(:,:)))
new_daily_2006(i,:,:) = squeeze(ids_2006(i,:,:));
%size of new_daily_2006 should be 212*119*177
else
new_daily_2006(i,:,:) = NaN;
end
end
The question is: when it will be work?
if (squeeze(ids_2006(i,:,:)) < (mean_wint_rho(:,:) - 3*stdv_daily_2006(:,:)))
Something like this
if ([1 0])
disp('hi')
end
Or maybe this
if any([1 0])
disp('hi')
end
  3 Kommentare
Sophia
Sophia am 16 Sep. 2019
I have finally figured the answer-
new_daily_2006 = [];
for t = 1:size(ids_2006,1)
for i = 1:size(ids_2006,2)
for j = 1:size(ids_2006,3)
temp = squeeze(ids_2006(t,i,j));
if (abs(temp) < stdv_daily_2006(i,j))
new_daily_2006(t,i,j) = temp;
else
new_daily_2006(t,i,j) = NaN;
end
end
end
end
darova
darova am 16 Sep. 2019
Bearbeitet: darova am 16 Sep. 2019
Try also without loops
m = size(ids_2006);
temp = reshape(stdv_daily_2006,[1 size(stdv_dayly_2006)]); % make 1 x 119 x 177
cond = abs(ids_2006) < repmat(temp,[m 1 1]) % make 212 x 119 x 177
new_daily_2006(cond) = ids_2006;
new_daily_2006(~cond) = NaN;

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by