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

Anzahl der Zeilenvektoren aus einer Matrix ablesen

 

Shanox
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.08.2018, 13:29     Titel: Anzahl der Zeilenvektoren aus einer Matrix ablesen
  Antworten mit Zitat      
Hallo zusammen,

ich bin leider ein absoluter Matlab-Neuling und hoffe mir kann hier jemand weiterhelfen.

Ich habe die Matrix "Mat_v_a_Zeitschritt2" mit n Zeilen und 2 Spalten. Diese Matrix wird durch eine Schleife generiert und nimmt bei jedem Schleifendurchlauf andere Werte an. Mit folgendem Code habe ich es geschafft für jeden Schleifendurchlauf genau die Zeilen herauszufiltern, die mehr als einmal vorkommen. Diese werden in der Matrix "dopplungen" gespeichert. Damit Zeilen, die mehr als 2 mal in der Matrix "Mat_v_a_Zeitschritt2" auftreten nicht mehrmals in der Matrix "dopplungen" aufgenommen werden, verwende ich die Funktion unique().

Code:
for r = 1:size(Mat_v_a_Zeitschritt2,1)-1  
    rowa = Mat_v_a_Zeitschritt2(r,:);  
    if any(ismember(Mat_v_a_Zeitschritt2(r+1:end,:), rowa, 'rows'))
        dopplungen(end+1,:) = rowa;
       
        dopplungen = unique(dopplungen,'rows');
       
    end

disp(Mat_v_a_Zeitschritt2)
disp(dopplungen)


end


Die Ausgabe sieht dann am Beispiel für einen Schleifendurchlauf so aus:
Code:

   56.0000    0.3000
   54.0000    0.3000
   54.0000    0.5000
   54.0000    0.3000
   54.0000    0.5000
   54.0000    0.8000
   54.0000    0.8000
   54.0000    0.5000

--> hier soll "gesucht" werden, welche Zeilen mehrfach vorkommen ("Mat_v_a_Zeitschritt2")
 
   54.0000    0.3000
   54.0000    0.5000
   54.0000    0.8000

--> diese Zeilen sind mehrfach vorhanden ("dopplungen")
 

Nun zu meiner Frage:

Ich möchte wissen, wie oft die mehrfach auftretenden Zeilen der Matrix "dopplungen" in der Matrix "Mat_v_a_Zeitschritt2" vorkommen. Um es am Beispiel zu verdeutlichen, bräuchte ich eine Funktion, die mir so etwas als Ergebnis liefert:
Code:

(die obere Zeile, befindet sich 2 mal, die mittlere 3 mal und die untere 2 mal in der Matrix "Mat_v_a_Zeitschritt2")

Bisher versucht habe ich es mit den Funktionen find() und ismember(), bin jedoch nicht zum gewünschten Ergebnis gekommen (liegt wahrscheinlich an meinen mangelnden Matlab-Kenntnissen Very Happy )

Ich hoffe das war verständlich erklärt und mir kann jemand weiterhelfen. Ich bitte um eine anfängerfreundliche Erklärung (am besten mit Erklärung wie und warum ihr das macht, was ihr macht) Very Happy

Vielen Dank im Voraus,
Shanox
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.08.2018, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

wenn du eine Funktion nutzt und nicht alle Infos bekommst, die du brauchst, immer schauen, ob die Funktion noch mehr Rückgabeargumente hat. Hier:
Code:
[dopplungen, ~ , zeile] = unique(dopplungen, 'rows')
histc(zeile)


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.