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

Fliplr auf 3D Matrix anwenden

 

FelixF
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 15:53     Titel: Fliplr auf 3D Matrix anwenden
  Antworten mit Zitat      
Hallo alle zusammen,
ich habe folgendes Problem. In meinem Datensatz muss ich meine Wertepaare verändern, in dem ich jede zweite Zeile verdrehen muss. In einer 2D Matrix ist das ganze kein Problem:

Code:

pressure = [ 1 2 3; 3 2 1;  1 2 3; 3 2 1];
pressure = fliplr(pressure(2:2:end,:));
 


Damit erhalte ich zum Schluss eine "geordnete" Matrix. Jetzt habe ich allerdings folgendes Problem, dass ich das ganze auf eine 3D Matrix anwenden möchte.

Code:

velocity(:,:,1) = [1 2 3; 3 2 1; 1 2 3];
velocity(:,:,2) = [1 2 3; 3 2 1; 1 2 3];
velocity(:,:,3) = [1 2 3; 3 2 1; 1 2 3];
 


Wie kann ich die Zeilen so ordnen, dass je zweite Zeile, beginnend mit der zweiten Zeile, gedreht wird?

LG Felix
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2013, 17:35     Titel:
  Antworten mit Zitat      
Hallo,

a) in einer for-Schleife, auf den 'Blättern' des 3D-Arrays arbeitend
b)
Code:

idx = 2:2:size(velocity,1);
velocity(idx,:,:) = velocity(fliplr(idx),:,:)


Bitte verifizieren, dass b) auch wirklich das gewünschte macht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 20:24     Titel:
  Antworten mit Zitat      
hallo Harald,
danke für deine Antwort. Der Vorschlag b hat nicht den erwünschten Erfolg gebracht, aber mit Hilfe deines Tipps, eine for Schleife zu verwenden, konnte ich das Ergebnis erzielen.

Code:

for i = 1 : size(velocity,3)
   velocity(2:2:end,:,i) = fliplr(velocity(2:2:end,:,i));
end
 


Ob es die eleganteste Methode ist weiß ich nicht, aber sie funktioniert Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

zu b) : wenn etwas nicht funktioniert, bitte auch sagen, inwiefern es nicht das gewünschte macht. Oft hilft ja eine kleine Änderung, um das gewünschte zu bekommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 21:06     Titel:
  Antworten mit Zitat      
Soweit ich es erkennen kann, passiert einfach gar nichts. Allerdings muss ich dazu sagen, dass ich jetzt mit Octave getestet habe.

Code:

for i = 1 : 5
   velocity(:,:,i) = [1 2 3; 3 2 1; 1 2 3; 3 2 1; 1 2 3; 3 2 1]
end

idx = 2:2:size(velocity,1);
velocity(idx,:,:) = velocity(fliplr(idx),:,:)

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.11.2013, 21:45     Titel:
  Antworten mit Zitat      
Hallo FelixF,
Zitat:
Soweit ich es erkennen kann, passiert einfach gar nichts.

Das hilft nicht weiter. Wie versuchst Du denn etwas zu erkennen? Wie startest Du das Programm?
Wie wäre es, wenn Du einen PRINT-Befehl in die Schleife einbaust, damit es eine Chance gibt zu sehen, was passiert?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 21:49     Titel:
  Antworten mit Zitat      
Doch ich erkenne es, dass Semikolon am Ende des Ausdruckes weglasse, wodurch ich eine Ausgabe in der Konsole erhalte.
Außerden ist die Matrix vorher und nachher identisch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2013, 22:15     Titel:
  Antworten mit Zitat      
Hallo,

die beiden Wege sollten ja auch Alternativen zueinander sein. Wenn du den Tausch zweimal vornimmst, hast du natürlich wieder die ursprüngliche Matrix.

Grüße,
Harald
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.