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

Matlab Matrixsortierung nach Zeilen

 

Jerno
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 09:09     Titel: Matlab Matrixsortierung nach Zeilen
  Antworten mit Zitat      
Hallo zusammen

Also ich habe eine 40X900 Matrix und will nun die 2. Spalte, die 3. Spalte usw immer mit der vorhergegangenen Spalte vergleichen also alle 40 Werte der 2. Spalte mit dem 1,1 Wert, dann dieselben mit dem 1,2 usw und dann will ich eine Zuordung machen in der immer der gingste Abstand zum nächsten Wert eingetragen wird.
Ich mache mal ein Bsp:
Originalmatrix

1.0 1.5 2.8 3.4 1.0 0.8
4.0 2.9 1.6 9.2 2.9 3.1
9.3 8.9 9.1 1.4 9.0 9.5

wenn ich nun das matlab programm starte soll folgendes rauskommen

1.0 1.5 1.6 1.4 1.0 0.8
4.0 2.9 2.8 3.4 2.9 3.1
9.3 8.9 9.1 9.2 9.0 9.5

ich weiß nicht wie ich das ohne eine riesen Ansammlung von Schleifen realisieren soll.
Wäre also für jeden Tip sehr dankbar.

Gruß Jerno
Private Nachricht senden Benutzer-Profile anzeigen


Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 09:28     Titel:
  Antworten mit Zitat      
Hi
vielleicht hilft dir ja
Code:

Matrix'
for k=1:Anzahl
    ergebnis=sort(Matrix,k,'descend')
end
ergebnis'
 


Gruss Fragewurm
_________________

Fehler jeglicher Art Dienen zur allgemeinen Belustigung
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 10:03     Titel:
  Antworten mit Zitat      
Hallo,

also wenn es einfach nur um sortieren geht dann genügt eine Zeile:
Code:


Wenn es wirklich um den geringsten Abstand geht, ist die Frage, was sollte passieren, wenn z.B. sowas vorliegt:

Code:

1.0 4.2
4.0 9.2
9.3 9.8
 


Der geringeste Abstand würde ja die 4.2 der 4.0 zuordnen, 9.2 der 9.3 and was passiert dann mit 9.8?

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Jerno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 13:20     Titel:
  Antworten mit Zitat      
Es ist einfach so, dass immer ein weiteres Signal passt.

Und jede Zeile muss mit jedem Wert der passenden Spalte verglichen werden.

Das heißt: Wert (1,1) mit allen anderen (1,n) Werten, und der mit dem geringsten Abstand wird dann als neuer 1,2 Wert zugewiesen.
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 14:44     Titel:
  Antworten mit Zitat      
Also wenn immer passende Werte da sind, kannst Du doch sort direkt verwenden. Mit Deinen Beispieldaten liefert das das genau gleiche Ergebnis.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jerno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 14:58     Titel:
  Antworten mit Zitat      
Sort liefert einfach nur ein Sortierung der Werte von tief nach hoch, das hat aber garnichts mit dem Abstand zu tun.
Ich brauche einnen Vergleich der Abstände.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jerno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 15:08     Titel:
  Antworten mit Zitat      
Und mein Beispiel ist schlecht gewählt, aber leicht angepasst:

4.0 2.9 1.6 9.2 2.9 3.1
9.3 8.9 9.1 1.4 9.0 9.5
1.0 1.5 2.8 3.4 1.0 0.8

wenn ich nun das matlab programm starte soll folgendes rauskommen

4.0 2.9 2.8 3.4 2.9 3.1
9.3 8.9 9.1 9.2 9.0 9.5
1.0 1.5 1.6 1.4 1.0 0.8

Und es soll im ersten Schritt den Abstand zwichen 4.0-2.9=1.1
den Abstand zwichen 4.0-8.9= -4.9
und den Abstand zwichen 4.0-1.0=3.0

wie man nun sieht ist der Abstand zwichen 1,1 und 1,2 am geringsten und wird somit als Wert für 1,2 gesetzt.

Falls wie bei dem Vergleich bei 1,3 ein anderer Wert näher ist soll dieser gesetzt werden.

Hoffe das war verständlicher und es hat jemand eine Idee.
MfG Jerno
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 16:01     Titel:
  Antworten mit Zitat      
Hallo,

mir ist noch nicht ganz klar, warum Du unbedingt die Abstände berechnen willst. Nachdem Du ja geschrieben hast, dass es zu jedem Wert einen passenden in der nächsten Spalte gibt, muss ja z.B. der kleinste Wert der zweiten Spalte zum kleinsten Werte der ersten Spalte gehören.
Das einzige was an dem veränderten Beispiel anderes ist, ist dass die erste Spalte nicht sortiert ist.
Also könntest Du die Matrix sortieren und dann die Zeilen entsprechend wieder zurück tauschen.

Code:

M = [4.0 2.9 1.6 9.2 2.9 3.1
9.3 8.9 9.1 1.4 9.0 9.5
1.0 1.5 2.8 3.4 1.0 0.8]

[N,idx] = sort(M);

P = sortrows([idx(:,1),N]);
P(:,1) = []
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jerno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2009, 10:03     Titel:
  Antworten mit Zitat      
Also ich habe Dein sort-Vorschlag ausprobiert, es ist aber nicht das was ich brauche, denn mit sort werden einfach alle Signale nach Größen sortiert, das heißt das zu Beginn größte Signal bekommt in jedem Schritt immer den größten Wert, das 2.größte den 2.größten Wert usw....
ich weiß aber, dass sich die Signale auch kreuzen, das heißt ich muss immer schauen welcher der 40 neuen Werte zu dem vorangegangenen den geringesten Abstand hat.
Und hast Du da vllt auch ne Idee???
Gruß Jerno
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2009, 17:46     Titel:
  Antworten mit Zitat      
Hallo,

zum ausprobieren wäre ganz gut, wenn Du mal den entsprechenden Teil mit so einer Signalkreuzung postest. Also wieder so ein überschaubarer Miniabschnitt wie zuvor auch, nur halt mit dem Problemfall Smile

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Jerno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2009, 13:38     Titel:
  Antworten mit Zitat      
Hallo Leute
also ich hab meine Abstandsortierung hinbekommen, jedoch wenn ich die herausgegebenen Zeilen zurückführen will bekomme ich nur Mist zurück, mache da wohl was falsch hoffe also auf Eure Hilfe.
Hier mein "Programm"(wenn man das so nenen kann):

Code:

%Alle Abstände zu Signal 1
ABV=[ABV00;ABV01;ABV02;ABV03;ABV04;ABV05;ABV06;ABV07;ABV08;ABV09;ABV10;ABV11;ABV12;ABV13;ABV14;ABV15;ABV16;ABV17;ABV18;ABV19;ABV20;ABV21;ABV22;ABV23;ABV24;ABV25;ABV26;ABV27;ABV28;ABV29;ABV30;ABV31;ABV32;ABV33;ABV34;ABV35;ABV36;ABV37;ABV38;ABV39];
%das Minimum von ABV ermitteln
[I Zeile]=min(ABV(1:40,n));
%in A zurückrechnen
neuer_Verlauf=A(1,Zeile(1,n));
 


A ist die Matrix mit den Originalsignalen.
Ich habe mir gedacht wenn Zeile mir die Zeile nennt sollte es kein Problem sein das zuzuordnen, jedoch wenn ich es wie beschrieben mache kommt nur Mist dabei raus.Hoffe jemand von Euch sieht meinen Fehler.
Gruß Jerno
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.