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

Countif in Matlab?

 

scanka
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 18.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2012, 10:10     Titel: Countif in Matlab?
  Antworten mit Zitat      
Hallo,

ich habe mal eine Anfängerfrage (denke ich...).
Ich habe zwei Vetoren mit Elementen 1-30. Eine Matrix mit all möglichen Kombinationsmöglichkeiten aus diesen Vektorelementen ergibt eine Größe von 900x2.

Nun habe ich einen tatsächlichen Datensatz, in denen bestimmte KOmbinationsmöglichkeiten (z.b. 1 3, 4 5; 12 8;..) mit einer gewissen Häufigkeit auftreten. Nun möchte ich, dass mir Matlab sagt, wie häufig eine bestimmte Kombination auftritt. In xls gibt es da z.B. die Funktion "countifs" und es würde mir die Häufigkeit einer bestimmten Kombination ausgeben.
Gibt es sowas auch in Matlab?
Wie löse ich dieses kleine Problem?

Bin um jeden Hinweis dankbar Smile...
Scanca
Private Nachricht senden Benutzer-Profile anzeigen


tschun
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 73
Anmeldedatum: 05.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2012, 10:37     Titel:
  Antworten mit Zitat      
Hi,

ich würde das so machen

Code:


A=[1 2;1 1; 1 2; 1,4; 1 1; 1 1;1 2]
[B,I,J]=unique(A,'rows');
count=hist(J,max(J))
 


In B hast du dann die Kombinationen (Achtung, sortiert durch unique) und in count die entsprechende Anzahl.
Private Nachricht senden Benutzer-Profile anzeigen
 
scanka
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 18.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2012, 22:48     Titel:
  Antworten mit Zitat      
Vielen Dank soweit!

Ich hatte vergessen zu sagen, dass ich nach dem Vorkommen einer bestimmten Kombination suche.

Ich habe die Möglichkeiten der Kombination in einer Matrix erstellt:

Code:
Index = [];
for i = 1:30;
    for j = 1:30;
        a = [i j];
        Index = [Index; a];
    end
end
clear a i j;


Nun habe ich meine eigentliche Matrix, mit den Kombinationen, die in der Realität tatsächlich vorkamen . Nun möchte ich die Häufigkeit dieser Kombinationen zählen. Das klappt mit dem obrigen Komand sehr gut. Allerdings brauche ich auch die KOmbinationen, die gar nicht auftraten (z.B. 5 1 ist keine row in den tatsächlichen Daten; soll aber trotzdem mit aufgezählt und als 0x angegeben festgehalten werden).

GIbt es sowas wie einen Matrix Vergleich ?
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: 13.12.2012, 12:44     Titel:
  Antworten mit Zitat      
Hallo scanka,

Die Methode zum Erstellen der Matrix ist sehr ineffizient. Siehe "pre-allocation" in diesem Forum.

Aber eigentlich benötigst Du ja auch die Kombinationen gar nicht explizit als Matrix, oder? Für die von tschun gezeigte Lösung zwar schon, die meiner Ansicht nach bereits das Problem löst schon, aber es geht auch ohne:
Code:
Verteilung = zeros(900, 1);
for ii = 1:30
    match1 = (A(:, 1) == ii);
    for jj = 1:30
        match2 = (A(:, 2) == jj);
        Verteilung((ii - 1) * 30 + jj) = sum(match1 & match2);
    end
end

Das abschließende "clear" bringt übrigens gar nichts.

Gruß, Jan
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.