Azzera filtri
Azzera filtri

I need to display a data

2 visualizzazioni (ultimi 30 giorni)
Aswas
Aswas il 14 Lug 2015
Modificato: Aswas il 18 Lug 2015
Can someone assist please:
  1 Commento
Azzi Abdelmalek
Azzi Abdelmalek il 14 Lug 2015
Modificato: Azzi Abdelmalek il 14 Lug 2015
Do you mean for the first week of each month or of what? can you give more details about your first column?

Accedi per commentare.

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 14 Lug 2015
Modificato: Andrei Bobrov il 15 Lug 2015
% data - your data; first column - data+time, second - Power
data = [timeprac1,P];
v = datevec(data(:,1));
a = datenum(unique(v(ismember(v(:,[2,3]),[1 1],'rows'),[1:3]),'rows'));
z = weekday(a);
dd = bsxfun(@minus,2:8,z - a)';
[lo,ii] = ismember(fix(data(:,1)),dd(:));
ii = ceil(ii/7);
out = accumarray(ii(lo),data(lo,2),[],@(x){[mean(x),max(x)]});
add variant, if "first week" - 1-7 January
v = datevec(timeprac1);
lo = v(:,2) == 1 & ceil(v(:,3)/7) == 1;
[a,~,c] = unique(v(lo,1));
out1 = accumarray(c,P(lo),[],@(x){[mean(x),max(x)]});
out = [a, cell2mat(out)];
third variant, here "first week" - first full week (Mon-Sun) each year's
v = datevec(timeprac1);
a = datenum(unique(v(ismember(v(:,[2,3]),[1 1],'rows'),[1:3]),'rows'));
z = weekday(a);
dd = bsxfun(@plus,a + 9 - z,0:6);
[lo,ii] = ismember(fix(timeprac1),dd(:));
ii = ceil(ii/7);
out = accumarray(ii(lo),P(lo),[],@(x){[mean(x),max(x)]});
  6 Commenti
Aswas
Aswas il 15 Lug 2015
Works, thank you very much.
Aswas
Aswas il 17 Lug 2015
Hi Andrei,
And how can I get only first years max and mean please, not every year?

Accedi per commentare.

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by