ich habe über die Weihnachtsfeiertage etwas an einem Tool geschraubt, dass jedoch bei folgender Codezeile abbricht:
Code:
for i=1:52
list(:,i)= unique(Variable_A(:,i)); % Ermittlung von unique values [n(:,i), index(:,i)] = histc(Variable_A(:,i), list(:,i)); % Anzahl und Value end;
Meine Variable_A besteht aus einer Matrix mit 604800x52 Datenpunkten, etwas zu viel, die jetzt hochzuladen. Nach dem 2.ten Iterationsschritt - index, list und n haben schon zwei ausgefüllte Spalten - zeigt mir Matlab dabei folgenden Fehler:
Das liegt daran, dass nicht in jeder Spalte deiner Variable_A gleich viele unterschiedliche Daten vorkommen. Dadurch sind die Spalten von list unterschiedlich lang, was in einer Matrix aber nicht möglich ist.
Du kannst statt einer Matrix bspw. ein cell verwenden, in das du Vektoren (je Spalte in Variable_A) speicherst.
leider kenne ich mich mit cell-Arrays und deren Einsatz nicht aus. Ich weiß nur, dass ich die Zelle vorher definieren(preallokieren) muss und den Datensatz, den ich verwende ebenfalls in cell2mat umwandeln sollte. In etwa so:
Ich weiß nur, dass ich die Zelle vorher definieren(preallokieren) muss und den Datensatz, den ich verwende ebenfalls in cell2mat umwandeln sollte.
Eine Preallokation ist vor einer Schleife eigentlich immer sinnvoll, auch bei Matrizen, sofern sich die Größe der Variablen in der Schleife ändert. Bei umfangreichen Datensätzen, um die Berechnungen zu beschleunigen; bei wenigen Daten, um sich anzugewöhnen Preallokationen zu verwenden.
btw cell2mat ist kein Datentyp, sondern eine Matlab-Funktion.
Variable_A braucht hier nicht in ein cell überführt zu werden, wir ändern es ja nicht, sondern lesen nur die Werte. Für list, n & index nutzen wir cells, weil sie sich für die diversen ii in ihrer Größe unterscheiden können.
list = cell(1, clmns_A); % pre-allocation
n = cell(1, clmns_A);
index = cell(1, clmns_A);
for ii = 1:clmns_A
list{1, ii} = unique(Variable_A(:,ii));
[n{1, ii}, index{1, ii}] = histc(Variable_A(:,ii), list{1, ii}); % Anmerkung: Zugriff auf Daten in cells mit geschweiften Klammern end
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
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.