Multiply values by the number of days in each month
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Dear all,
I have a 41x35x360 array namely C. So the C has 360 pages; while 360 represents months from 1-1-1989 (to 12-31-2018 which is 360 months). I want to multiply the value inside each page to the number of days in each month (considering leap and non-leap years). If it is matter 41 and 35 are latitude and longitude, respectively.
C = rand(41,35,360) ; % random 3d data
For example:
C(41, 35, 1) * number of days in January 1989
C(41, 35, 2) * number of days in February 1989
...
C(41, 35, 360) * number of days in December 2018
Thank you
0 Commenti
Risposta accettata
Star Strider
il 12 Mag 2020
yearv = 1989:2018;
for k = 1:numel(yearv)
daysInMonth(k,:) = [yearv(k), eomday(yearv(k), 1:12)];
end
This creates a matrix where the first column is the year and columns 2:13 are the days in each month of that year.
Adapt it to provide the information you need for your array.
0 Commenti
Più risposte (1)
the cyclist
il 12 Mag 2020
C = rand(41,35,360) ; % random 3d data
daysNonLeap = [31; 28; 31; 30; 31; 30; 31; 31; 30; 31; 30; 31];
daysLeap = daysNonLeap;
daysLeap(2) = 29;
daysFourYear = [daysNonLeap; daysNonLeap; daysNonLeap; daysLeap];
daysThirtyYear = [repmat(daysFourYear,7,1); daysNonLeap; daysNonLeap];
C = C .* permute(daysThirtyYear,[3 2 1]);
0 Commenti
Vedere anche
Categorie
Scopri di più su Dates and Time 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!