Ich habe eine Matrix von Daten, wo jede Zeile mehrere Datumsangaben und eine Mitarbeiter-ID hat (und die gleichen IDs werden in verschiedenen Zeilen wiederholen). Ich muss die Zeitangaben nach Mitarbeitern auswerten, also möchte ich die relevanten Daten später zur Verarbeitung zusammentragen. Ich bin neu in Matlab und habe kein großes Gespür dafür, was das Beste dafür ist (Struct-Array, Zellen-Array, einzelne Arrays, etc.). Hinweis: Ich weiß im Voraus, wie viele Mitarbeiter ich bewerten werde, aber sie haben unterschiedliche Anzahlen von Datumsangaben, daher ist eine Matrix wahrscheinlich falsch.Matlab Newbie - vernünftige Möglichkeit, um Daten unterschiedlicher Größe zu speichern
Im Moment durchlaufe ich die Zeilen meiner Matrix und überprüfe die Benutzerspalte, und ich möchte in der Lage sein, die Datumswerte aus dieser Zeile an einem Platz für diesen Benutzer zu speichern (und anhängen, wenn dort bereits einige vorhanden sind))
data_matrix = [1,735724.291666667,735724.322916667,735724.343750000,5;
2,735724.331250000,735724.340277778,735724.371527778,18;
3,735724.402083333,735724.420833333,735724.445833333,18;
4,735724.411111111,735724.465277778,735724.515972222,42;
5,735724.412500000,735724.433333333,735724.459027778,8;
6,735724.425000000,735724.519444444,735724.552777778,5;
7,735724.431250000,735724.455555556,735724.482638889,18;
8,735724.438888889,735724.486805556,735724.495833333,8;
9,735724.531944444,735724.545138889,735724.581250000,18;
10,735724.547222222,735724.579861111,735724.604166667,13;
11,735724.549305556,735724.588194444,735724.614583333,8;
12,735724.563888889,735724.618055556,735724.645138889,42];
% we only care about IDs 1-26
employees_to_check= 1:26
for i= 1:length(data_matrix)
%employee id is the fifth element
this_employee = [data_matrix(i,5)];
keep_record = ismember(this_row_tech, employees_to_check);
if keep_record
times_to_add = [data_matrix(i,2), data_matrix(i,3), data_matrix(i,4)]
% save it someplace
end
end
Was ist ein guter Ansatz zum Speichern von Daten wie diesem?
Es gibt ein paar Optionen. Sie könnten eine ['table'] (https://www.mathworks.com/help/matlab/ref/table.html) mit Spalten für die ID und die' datetime' Arrays verwenden. Sie könnten einen [map container] (http://www.mathworks.com/help/matlab/map-containers.html) verwenden, wobei der Schlüssel die ID und der Wert das Array 'datetime' ist. Sie könnten ein ['struct'] (http://www.mathworks.com/help/matlab/ref/struct.html) mit [dynamic field referenzing] (http://blogs.mathworks.com/loren/2005) verwenden/12/13/use-dynamic-field-references /) aber mit streng numerischen IDs ist es nicht die beste Option. – excaza
Von diesen ist "Tabelle" wahrscheinlich die beste, wenn Sie Statistiken ausführen möchten, da es Methoden zum Gruppieren und Operieren über Variablen in der Tabelle gibt. Ein Vorbehalt: Obwohl es sich seit seiner Einführung vor ein paar Jahren verbessert hat, sind die Methoden von "table" möglicherweise immer noch langsamer als der Betrieb mit den "rohen" Datenklassen. – excaza