Hi
I Have time variables, such as [01/04/1960(dd/mm/yyyy),23/09/1960, 08/01/1980, 18/11/1980] and corresponding magnitude values[5, 4.2, 6, 7]. I need yearly sum values of magnitudes. So for the year 1960 I am supposed to get 9.2, and for 1980 the value 13.(Actually my table is much bigger, I just gave 2 years values to know the way how to do it).
So how I can get yearly sum values?
Thank a lot!

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2016년 5월 20일

1 개 추천

d={'01/04/1960';'23/09/1960';'08/01/1980';'18/11/1980'}
v=[5; 4.2; 6;7]
a=datevec(d,'dd/mm/yyyy')
[y,~,kk]=unique(a(:,1))
out=[y accumarray(kk,v)]

댓글 수: 7

davit petraasya
davit petraasya 2016년 5월 20일
Great Azzi. You saved me once more :). Thank you very much!
Azzi the code is working perfectly for single plot. If I want to use in plotyy it is not working
d={'01/04/1960';'23/09/1960';'08/01/1980';'18/11/1980'};
v=[5; 4.2; 6;7];
a=datevec(d,'dd/mm/yyyy');
[y,~,kk]=unique(a(:,1));
out=[y accumarray(kk,v)];
bar(y, accumarray(kk,v));
hold on;
plotyy(nan,nan,dateseries,values)
Here dateseries is (01/01/1965,08/04/1975,03/08/1985) and values correspondly (65,79,85).
What would be error?
Thanks.
Azzi Abdelmalek
Azzi Abdelmalek 2016년 5월 20일
What do you mean by : it's working for single plot?
it is working for
bar(y, accumarray(kk,v));
if I want to continue my coding for making bar and curve together in one plot using by plotyy it is not working.
This is another question which is not related to your original question:
d={'01/04/1960';'23/09/1960';'08/01/1980';'18/11/1980'};
v=[5; 4.2; 6;7];
a=datevec(d,'dd/mm/yyyy');
[y,ii,kk]=unique(a(:,1));
out=[y accumarray(kk,v)];
yyaxis left
bar(datenum(d(ii)), accumarray(kk,v))
d1={'01/01/1965';'08/04/1975';'03/08/1985'}
vc=[65,79,85]
yyaxis right
plot(datenum(d1),vc)
xt=sort(datenum([d(ii);d1]))
set(gca,'xtick',xt)
datetick('x','yyyy','keepticks')
davit petraasya
davit petraasya 2016년 5월 20일
Thank you Azzi for answering to this question also. You are very helpful.
Ice lady
Ice lady 2016년 8월 21일
Dear Azzi,
I have a similar problem to davit and tried to re-write the above to work for me, but failed. My date data is in form YYYY = A(:,1), mm = A(:,2) and dd = A(:,3). My daily data has variable number of entries and is in column A(:,5). I also need to compute annual data totals.
Any suggestions would be greatly appreciated.
Thanks in advance

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Two y-axis에 대해 자세히 알아보기

질문:

2016년 5월 20일

댓글:

2016년 8월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by