|
|
Häufigkeit von Werten in einer Matrix ploten |
|
Jekyll |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 12.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 15:16
Titel: Häufigkeit von Werten in einer Matrix ploten
|
 |
Hallo alle zusammen,
mein Aufgabe ist folgende:
Ich möchte mir in einem Histogramm anzeigen lassen, wie oft welcher Wert in meiner Matrix vertreten ist.
Ich bin bis jetzt soweit:
Das Problem ist jetzt aber:
Mein Plot zeigt natürlich nur die Werte aus meinem letzten durchlauf der Schleife (der letzten Spalte meiner Matrix). Allerdings brauche ich ja aber einen Plot mit der Summe aller Durchläufe (Summe aller Spalten mit Wert).
Jemand eine Idee???
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 16:17
Titel: Re: Häufigkeit von Werten in einer Matrix ploten
|
 |
Hallo Jekyll,
Wenn Du die "Summe aller Durchläufe" brauchst, ist eine eine naheliegende Strategie, die Summe aller Durchläufe zu berechnen. Im Ernst. Oft liegt in der deutschen Formulieren bereits die Lösung.
Da nun insgesamt 5001 Werte möglich sind, kannst Du HIST ja gleich über diese Werte einteilen lassen:
Vielleicht muss H als Spaltenvektor definiert werden, ich kann gerade Matlab nicht für einen Test laufen lassen.
Eine Schwierigkeit sind noch die 0-basierten Werte von ROUND(RAND). Deshalb habe ich mal eine 1 addiert, später wieder abgezogen.
Gruß, Jan
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 16:28
Titel:
|
 |
Hallo,
also vielleicht habe ich dein Problem auch falsch verstanden, aber wenn du nur die Haeufigkeit deine Werte in der Matrix anzeigen lassen moechtest wuerde dies auch viel einfacher und auch ohne Schleife funktionieren:
Wenn du dies mit der Summe meintest wird wohl Jan seine Loesung funktionieren, auch wenn ich sie mir jetzt nicht bis ins letzte Detail angeschaut habe.
MFG
Sco
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 16:49
Titel:
|
 |
Hallo Sco,
Ich glaube, Dein Ansatz ist eher was Jekyll sucht. Zudem ist HISTC hier irgendwie logischer als HIST.
Eine weiter Idee wäre:
Ich finde allerdings die Syntax von ACCUMARRAY ausgesprochen unhandlich.
Gruß, Jan
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 21:47
Titel:
|
 |
Hallo Jan,
bei dem Plot Befehl stimmen die Dimensionen der Vektoren nicht (immer).
Die Anzahl der x-Werte ist doch abhaenig von den Werten in M, welche wiederrum die Indizes fuer accumarray angeben. Deshalb laesst sich doch auch kein fester Wert fuer die x-werte festlegen (ausser ich weiss davor den Maximalwert in M), oder? Natuerlich ist bei 100*100 Werten die Wahrscheinlichkeit gross, dass mindesten 1 mal die 1 bzw. 5000 erzeugt wird, bei mir war es aber (wie es der Zufall eben so will) beim ausprobieren deines Codes nicht der Fall, so dass der Dimensionsfehler auftrat. Diese kleine Aenderung sollte das Problem beheben:
Wenn ich mich irre, so lass es mich bitte wissen
MFG
Sco
Zuletzt bearbeitet von Sco am 02.02.2011, 21:58, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 21:57
Titel:
|
 |
Hallo,
ich hätte auch noch einen Das ganze direkt auf alle Elemente der Matrix (als Vektor aufgefasst) anwenden:
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 ;)
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 03.02.2011, 13:43
Titel:
|
 |
|
 |
|
Hallo Sco,
Du hast ganz genau recht.
Ich hatte so lange versucht in ACCUMARRAY die Liste von Bins als Input zu definieren, dass ich mich verhaspelt habe.
Wie könnte ACCUMARRAY das intern machen? Entweder es sucht zunächst die Daten durch, um das Maximum zu bestimmen, und danch ein zweites Mal um die Daten zu schreiben. Oder aber ACCUMARRAY benutzt keine pre-allocation und vergrößert die List ständig bei Bedarf. Das sollte sich leicht unterscheiden lassen: Eine rückwärts sortierter Input sollte ohne pre-allocation schneller sein als ein vorwärts-sortierter.
Moment bitte... Aha:
Sortierte Inputs werden also unabhängig von der Sortiertrichtung gleich schnell akkumuliert. Unsortierte Daten brauchen dagegen länger - wahrscheinlich erkennt ACCUMARRAY den sortierten Input und nutzt ein Binary-Search.
Aber: Wenn man stattdessen eine kleineren [50.000 x 1] Vektor verwendet, sind sortierte und unsortierte Daten gleich schnell. Also kommt es wohl auch darauf an, ob die Daten in den Prozessorcache passen.
Meine Schlußfolgerung: ACCUMARRAY ist für die Aufgabe nicht wirklich geeignet. HISTC ist aber auch noch ein Overkill, da es individuelle Bins erlaubt. Die Aufgabe, die Häufigkeit von Integern zu bestimmen, erschien hier öfter mal. Vielleicht wäre eine genau auf das Problem zugeschnittete MEX-Funktion eine gute Idee.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|