Multiply values by the number of days in each month
조회 수: 2 (최근 30일)
이전 댓글 표시
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
채택된 답변
Star Strider
2020년 5월 12일
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
추가 답변 (1개)
the cyclist
2020년 5월 12일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Dates and Time에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!