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

Falsche Dimension nach Iterierung

 

Annalena

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 20:39     Titel: Falsche Dimension nach Iterierung
  Antworten mit Zitat      
Hey, ich suche einen Fehler in meinem Script und komme einfach nicht darauf, was da verkehrt läuft. Vielleicht habt ihr eine Idee?

Ich habe die Matrix "data" mit den Dimensionen 300x3x2.
Mein Ziel ist es, diese Matrix in zwei Matrizen zu unterteilen (one und two) und zwar anhand der Werte in der letzten Spalte. Der Code läuft zwar durch, spuckt mir aber Variablen mit den Dimensionen 100x6x2 anstatt 100x3x2 aus. Mir erschließt sich einfach nicht, wo dieser Fehler stecken könnte.

Mein Code:

Code:
for i = 1 : size(data,3)
 datatac(:,:,i)= sortrows(data(:,:,i),1)

lastColumn = data(:,end,i);               % Get last column
one(:,:,i) = data(lastColumn == 1, :) % Get ones
two(:,:,i) = data(lastColumn == 2, :) % Get twos

end


Schönen Abend euch!


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2020, 21:10     Titel:
  Antworten mit Zitat      
Hallo,

immer so viele Indizes verwenden, wie es Dimensionen gibt. Ich würde also vorschlagen:
Code:
one(:,:,i) = data(lastColumn == 1, :, i) % Get ones


Das wird aber nur funktionieren, falls es in jeder "Schicht" (i = 1 und i = 2) in der letzten Spalte genauso viele 1en gibt. Falls nicht:
Code:
one{i} = data(lastColumn == 1, :, i) % Get ones


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Annalena

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2020, 21:26     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke das funktioniert. Kannst du dir denn erklären, woher diese komischen Dimensionen kamen? Wahrscheinlich, weil ich durch die Spalten iteriert habe oder?

In deinem Lösungvorschlag werden 2 cells erzeugt. Gäbe es auch die Möglichkeit eine 3D Matrix rauszubekommen? Mit cell2mat funktioniert das leider nicht

Danke und Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2020, 21:38     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Gäbe es auch die Möglichkeit eine 3D Matrix rauszubekommen?

Nur falls es in jeder "Schicht" (i = 1 und i = 2) in der letzten Spalte genauso viele 1en gibt. Sonst ist die Anzahl der Zeilen in jeder Schicht unterschiedlich, und das ist bei 3D Arrays nicht zulässig.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Annalena

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2020, 18:27     Titel:
  Antworten mit Zitat      
Hi Harald,

mit cell2mat spuckt er mir eine Matrix mit den entsprechenden Werten in der beiden cells aus, jedoch packt er beide Matrizen nebeneinander.

Hast du eine Idee, wie man diese Matrix weiterführend in eine 3D Matrix packen kann?
Danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.07.2020, 18:49     Titel:
  Antworten mit Zitat      
Hallo,

aus dem Stand nicht, da ich nicht weiß, was nun die Dimensionen der beteiligten Variablen sind.

Wenn die Anzahl der Spalten oder Zeilen nicht übereinstimmt, geht es schlicht und einfach nicht.
Wenn schon, kann man etwas folgender Art versuchen:
Code:
M2 = cat(3, M{:})


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.