WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Effiziente Datensatzbearbeitung (Filtern)

 

Pedda123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2018, 19:39     Titel: Effiziente Datensatzbearbeitung (Filtern)
  Antworten mit Zitat      
Hallo zusammen,

ich habe einen etwas umfangreichen Datensatz (108.000 * 23) und würde diese gern filtern bzw. über bestimmte Werte mitteln. Leider kenne ich mich hiermit nur bedingt aus und Excel ist mit der Datenmenge überfordert.

Ziel ist es beispielsweise einen Datensatz mit Datum, Zeit und Werten zu bearbeiten unter der Bedingung, dass alle Werktage von 05:00-22:00 gemittelt werden.

Werktage erhalte ich über die Weekday Funktion und habe sie mit den deutschen Kalender angepasst, damit alle Feiertage enthalten sind.

Code:

[input,temp]=xlsread('Datum.xlsx');      
time = temp(:,1);
short = (cellfun('length', time) == 10);
time(short) = strcat(time(short), ' 00:00:00');

clear temp short input

% Zugehöriger Wochentag
[DayNumber,DayName] = weekday(datenum(time,'dd.mm.yyyy'));
% Montag = 2, Dienstag = 3, Mittwoch = 4, Donnerstag = 5, Freitag = 6,
% Samstag = 7, Sonntag = 1
DayNumber_orig = DayNumber;

% Feiertage ermitteln
[input,temp]=xlsread('Feiertage.xlsx');
date2012 = temp(:,2);

% Feiertage / Zeilen ermitteln
workday = datenum(time,'dd.mm.yyyy');               % Wochentag in Zahlenwert
holiday12 = datenum(date2012,'dd.mm.yyyy');         % Feiertag in Zahlenwert

Logic2012 = ismember(workday, holiday12, 'rows');   % Vergleich mit logischer Induzierung

% Feiertage in DayNumber ersetzen durch 1 (Sonntag)
Logic = Logic2012;
row = find(Logic(:,1)==1);                          % Zeile finden
DayNumber(row,1) = 1;                               % Ersetzen
 


Mit dem Datensatz kann ich hieraus die Mittelwerte je Tag filtern:

Code:

Numbers = {'Jahr2012'};
...

Meanvalues = mean(reshape(Bewohner.([Numbers{t}])(1:2976,i),96,2976/96)); % jede 96 Werte ein Mittelwert
 


Datum (Cell-Datei):
01.12.2012 05:15:00
01.12.2012 05:30:00
01.12.2012 05:40:00
...

Bewohner (Double):
0.123
0.124
0.125
...

Soweit so einfach, nun habe ich aber das Problem, das ich nicht weiß, wie ich hieraus eine weitere Filterung mit einer Uhrzeit vornehmen kann und dies effizient gestalte.
Also Ziel wäre jetz zum Beispiel:
"
Mittlere Leistung am Werktag, Tagsüber (05-22 Uhr) je Tag
"

Grüße
Pedda


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.