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

Matrix Zeilen neu anordnen

 

Flo310790
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 06.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2014, 13:37     Titel: Matrix Zeilen neu anordnen
  Antworten mit Zitat      
Hallo Hallo,
ich habe folgendes Problem:
ich will die Zeilen einer Matrix anhand eines Vektors neu anordnen.

zB
Code:

vektorist= [a;b;c ]  -->  vektorsoll=[b;a;c]
 


ansich kein problem, jedoch hat die Matrix mehr Zeilen als der Vektor, da zb. zum Buchstaben a drei Zeilen in der Matrix gehören

zb
Code:

Matrixist= [a1 ; a2 ; a3 ; b ; c] --> Matrixsoll= [b; a1; a2; a3; c]

 


Die Information die ich habe:
-zu a (falls vorhanden) gehören immer drei Zeilen und zu b und c immer maximal eine ( falls vorhanden)
- vektorist, vektorsoll und Matrixist werden vom Programm bereits erzeugt

Das Ganze ist ggf schnell zu lösen aber mir fällt momentan nichts brauchbares ein.

MfG,
Flo
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

und wenn 4 Zeilen da sind, ist das letzte Element dann b oder c?

Eine Fallunterscheidung sollte das Problem lösen.

Code:
l = numel(v);
switch l
case 3
v2 = v;
case 5
v2 = v([4,1,2,3,5]);
...
end


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 06.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2014, 13:07     Titel:
  Antworten mit Zitat      
hi,
also das einzige was fest ist, ist das die a's oben stehen wie viele das sind und in welcher Reihenfolge ist beliebig ( zu jedem a gehören dann 3 zeilen in der Matrix, welche der Reihenfolge des Vektors entsprechen)
unter den a's stehen beliebig viele b's und c's gemischt. Hier stimmt die Reihenfolge der Matrix Zeilen.

Es müssen also sozusagen die aZeilen zwischen die b's und c's sortiert werden.

Ich hab mir jetzt selbst eine Lösung zusammen gebastelt:

ich suche mit find die Indize für die Richtige Reihenfolge, dann nehme ich alle Indize von a Zeilen ( stehen ja ganz oben und ich weiß wie viele es sind) * 3 und alle Indize von nicht a Zeilen (+2*Anzahl a's)
danach setze ich vor die a Zeilen einfach die 2 vorgänger Zahlen ... somit hab ich dann einen tauschvektor der die selbe Zeilenzahl hat wie die Matrix ...


Bsp.:
Code:

matrixist =[a2.1;a2.2;a2.3;a1.1;a1.2;a1.3;b1;c;b2]
matrixsoll=[a2.1;a2.2;a2.3;b1;c;a1.1;a1.2;a1.3;b2]
vektorist =[a2;a1;b1;c;b2]
vektorsoll=[a2;b1;c;a1;b2]

mit find
tauschvektor=[1;3;4;2;5]
es gibt 2 a's also alle a Zeilen (1 und 2 ) *3 und alle anderen +2*2
tauschvektor=[3;7;8;6;9]
nun vor den a zeilen die 2 vorgänger Zahlen einfügen
tauschvektor=[1;2;3;7;8;4;5;6;9]

mit diesen tauschvektor kann ich dann die Zeilen der Matrix tauschen
 



Gibt sicher eine elegantere Lösung... deinen Ansatz muss ich mir noch anschauen.

MfG,
Flo



PS: hab grad gemerkt das die a's gar nicht a1.1 a1.2 a1.2 a2.1 .... geordnet sind sondern a1.1 a2.1 a1.2 a2.2 a1.3 a2.3 ^^
aber sollte ja nicht schwer zu ändern sein ... hoff ich
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.