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

Bestimmen, welche Zeilen gleich in Matrix sind

 

Sven1904
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 18.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 12:21     Titel: Bestimmen, welche Zeilen gleich in Matrix sind
  Antworten mit Zitat      
Guten Morgen,

leider komme ich bei einer Sache nicht weiter.

Ich habe später eine große Matrix, wo viele Zeilen fast gleich sind. Manchmal sogar komplett gleich. Dabei gibt es mehr Zeilen als Spalten.

Gibt es eine Möglichkeit, dass mir genau gesagt wird, welche Zeilen gleich sind. Dabei interessieren mich nicht die Spalten, sodass hinterher gesagt wird z.b hier:

Zeile 1 und Zeile 3 sind gleich
Zeile 2 und Zeile 4 sind gleich

Wichtig ist dabei auch, dass ich einen Toleranzbereich angeben kann, ab wann diese gleich sind.


Code:

A = [1.1 2.1 3.1 4.1 5.1     % A1
        3   4   2   4   2           % A2
        1   2   3   4   5           % A1
        3   4   2   4   2           % A2
        2   3   4   5   6 ]         % A3

tol=0.2

a = rank(A,tol)
 




Dies wäre jetzt z.B ein Beispiel. Ich weiss dass man etwas über rank machen kann, aber nicht wie es bei unsymetrischen Matrizen ist und wie ich das dann auch am Ende ausgebe, welche gleich sind.


Ich wäre euch sehr dankbar, wenn Ihr mir weiter helfen könntet!

Schöne Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.11.2013, 14:12     Titel:
  Antworten mit Zitat      
Ich könnte mir vorstellen zuerst mit SORTROWS zu sortieren. Dann muss man nur noch jede Zeile mit EINER Nachbarzeile zuvergleichen.

Dann subtrahieren und den Betrag aufsummieren. Wenn der z.B. unter 1e-12 liegt sind die Zeilen gleich.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Duall777
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2013, 14:17     Titel:
  Antworten mit Zitat      
Morgen
also mit dem rank befehl kenne ich mich nicht aus aber mit na schleife könnte es gehen:
Code:

for n=1:length(A(:,1))
   for i=1:(length(A(:,1))-1)
      if A(n,:)==A((i+1),:)
         a =int2str(n);
         b =int2str(i+1);
      disp('Zeile ',a,' und Zeile ',b,' sind gleich');
       end;
     end;
end;
 

wenns ne riesige matrix ist kann es sein das er kurz rechnen muss
also wenn du kein befeh findest kannst es ja mal damit versuchen

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.11.2013, 14:20     Titel:
  Antworten mit Zitat      
Code:

clc
A=[1 2 3; 4 5 6; 1 2 3; 2 2 2; 4 5 6]
[ix,iy]=sortrows(A);
for k=1:length(iy)-1
   if(sum(abs(ix(k,:)-ix(k+1,:)))<1e-12)
      disp(['Zeilen ', num2str(iy(k)), ' und ', num2str(iy(k+1)), ' sind gleich'])
   end
end
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Basqueacoustics
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 14.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2013, 23:26     Titel: Zu rank Befehl
  Antworten mit Zitat      
Servus!
Also, mit dem rank Befehl im Matlab kannst du dir den Rang einer Matrix bestimmen,d.h., die Anzahl der linear unabhängigen Vektoren die vorkommen.
Da die genau gleichen Zeilen finden willst, kann dir rank nicht helfen.
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.