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

unique-for Schleife: Subscripted assignment dimension mismat

 

Gerome

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2015, 15:00     Titel: unique-for Schleife: Subscripted assignment dimension mismat
  Antworten mit Zitat      
Hallo zusammen,

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:

Code:

Subscripted assignment dimension mismatch.

Error in PRL (line 424)
list(:,i)= unique(Variable_A(:,i));
 


So richtige weiß ich jetzt nicht mehr weiter. Kann mir jemand helfen?

Grüße
Gerome


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.01.2015, 15:42     Titel:
  Antworten mit Zitat      
Hallo Gerome,

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.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Gerome

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2015, 17:56     Titel:
  Antworten mit Zitat      
Hallo Seban,

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:
Code:

% ? Variable_A(:,i)=num2cell([:,i]);

list=cell(52, 52);

for i=1:52
list{:,i}= unique(Variable_A(:,i));
[n(:,i), index(:,i)] = histc(Variable_A(:,i), list(:,i));
end;
 


Wie man schon sieht, habe ich bei cell-Arrays keine wirkliche Ahnung. Kannst du mir vielleicht noch einen Tipp geben?

Grüße Gerome
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.01.2015, 19:20     Titel:
  Antworten mit Zitat      



Dieser Artikel existiert nicht oder nicht mehr auf dem Amazon-Server.
Hi,

Gerome hat Folgendes geschrieben:
leider kenne ich mich mit cell-Arrays und deren Einsatz nicht aus.

cell plus Suchmaschine deiner Wahl nutzen Wink

Gerome hat Folgendes geschrieben:
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.
Code:
Variable_A  = randi(10, 25, 5);
clmns_A      = size(Variable_A, 2);

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


Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2025 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.