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

Blockweise neu anordnen von Zeilen

 

TTT
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2018, 15:45     Titel: Blockweise neu anordnen von Zeilen
  Antworten mit Zitat      
Hallo werte Community,

ich würde gerne Zeilen blockweise neu anordnen.

Bsp:
1 1
2 2
3 3
4 4
5 5
6 10
7 9
8 8
9 7
10 6
11 11
12 12
...
und das in 5er Schritten so weiter. Wobei die 5 nur ein Beispiel ist.
ob ich das nun in dem selben Vektor mache oder das in einen neuen Vektor übertrage ist eigentlich egal.

Kann mir da jemand weiterhelfen? Ich habe mir zuerst überlegt eine Schleife zu verwenden in der ich blockweise hochzähle und immer wenn ich eine gerade Zahl habe den entsprechenden Block von unten nach oben sortiere. So ganz geheuer ist mir diese Idee aber nicht.

Mit freundlichen Grüßen
TTT
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.06.2018, 16:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
So ganz geheuer ist mir diese Idee aber nicht.

Warum nicht?

Zum Umsortieren eines Blocks kannst du flipud verwenden.

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2018, 17:29     Titel:
  Antworten mit Zitat      
Guten Abend,

Das mit dem neu anordnen funktioniert nun. Hab das flipud angewandt.
Allerdings wird hier mein G nach jedem zweiten Durchlauf überschrieben. Im Grunde genommen ist das mit dem Code auch logisch. So würde mir jetzt 11,12,13,14,15,20,19,18,17,16 ausgegeben werden. Wie schaffe ich es nun das aber alle Werte aneinandergehängt werden. Also beide E- und F-Vektoren. Bzw. statt F auch E, wenn das funktionert.

Code:
%
A = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20];

E= zeros();
F=zeros();
i=1;

while i<5
   if rem(i,2)
    E = A(1+5*(i-1):5*i,1:end);
   else
    F = flipud(A(6+5*(i-2):5*i,1:end));
   end
   
   G= vertcat(E,F);
   
  i= i+1  ;
end
 


Vielen Dank schon mal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

am Anfang G auf [] initialisieren und in der Schleife G = [G; ...]

Warum aber so kompliziert? Du brauchst ja nur A zu überschreiben.
Code:
A = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20];
i=1;

while i<5
   if ~rem(i,2)
    A(6+5*(i-2):5*i,1:end) = flipud(A(6+5*(i-2):5*i,1:end));
   end
  i= i+1  ;
end


Grüße,
Harald
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: 23.06.2018, 02:04     Titel: Re: Blockweise neu anordnen von Zeilen
  Antworten mit Zitat      
Hallo TTT,

Mir ist immer noch nicht ganz klar, was die Inputs sind. Wenn es ein Vektor ist, dessen Länge durch 5 teilbar ist, hilft Dir vielleicht dies:
Code:
A = (1:20).';
B = reshape(A, 5, []);
B(:, 2:2:end) = B(end:-1:1, 2:2:end);
C = B(:)

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2018, 12:03     Titel:
  Antworten mit Zitat      
Vielen Dank Harald,
das ist die Lösung. Ich sollte tatsächlich anfangen nicht so kompliziert zu denken.
Natürlich auch einen Dank an dich Jan für deine Mühe.

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