How to sum every 29 data and make some condition for them?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have data for a long time. I would sum them every 30 times continuously (first row to 30th row, then second row to 31th row and 3th row to 32 and ............... to end). finally, I would do some conditions. I attached an excel file to show clearly what is that. I would have it by codes in matlab. is there any way to do that?
0 commentaires
Réponse acceptée
Guillaume
le 19 Juil 2016
For your moving sum, use movsum (available since r2016a, before that use a convolution). You can then test all values at once with vectorised comparison:
rainfall = readtable('sample.xlsx', 'Range', 'A1:B43082');
movingsum = movsum(rainfall.Rainfall_mm_, 30, 'EndPoints', 'discard');
%prior to 2016a:
%movingsum = conv(rainfall.Rainfall_mm_, ones(30, 1), 'valid');
condition1 = movingsum > 0.5;
condition2 = condition1(1:end-1) & ~condition1(2:end);
1 commentaire
Plus de réponses (1)
Alexandra
le 19 Juil 2016
Modifié(e) : Alexandra
le 19 Juil 2016
I would try something like this:
for k=1:(numel(A)-30)
B(k) = sum(A(k:k+29));
if B(k) <= 0.5
C(k) = 0;
else
C(k) = 1;
end
if k == 1
D(k) = 0;
else
if C(k) == 1 && C(k-1) == 0
D(k) = 1;
else
D(k) = 0;
end
end
end
Does it work?
0 commentaires
Voir également
Catégories
En savoir plus sur Spreadsheets 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!