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

Auslesen, zählen als schleife, Darstellung Balkendiagramm

 

Helios0815
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2022, 10:32     Titel: Auslesen, zählen als schleife, Darstellung Balkendiagramm
  Antworten mit Zitat      
Guten Tag,

ich bin neu hier und fange nun an mich mal mit Matlab auseinander zu setzen. Die hilfen hier im Forum sind sehr gut gibt aber leider immer wieder leichte abwandlungen da es wirklich spezifische Probleme sind. Dh meine Frage die wahrscheinlich schon öfter gestellt wurde ich aber nichts genaues dazu gefunden habe.

Ich habe eine Matrix NxM mit ganzzahligen werten von 1 - 45. Ich benötige nun Hilfe dabei die Anzahl der jeweiligen werte zu erhalten.

Bsp.

Zahl 1 kommt 5x vor.

usw.

das ganze dann in einem Vektor 1x45 als Ergebnis. Der Mega umständliche Weg geht

H1 = sum(HG==1);
H1 = sum(H1)
H2 = sum(HG==2);
H2 = sum(H2)
H3 = sum(HG==3);
H3 = sum(H3)
H4 = sum(HG==4);
.
.

das ganze wäre aber natürlich schöner in einer for-Schleife.

HG ist dabei meine NxM Matrix. In meinem Umständlichen Beispiel oben zähle ich erst die Werte und addiere dann die werte um eine Gesamtanzahl zu erhalten. Da sich die werte im ersten Moment nur spaltenweise addieren lassen. Das knallt natürlich meinen Speicher unnötig voll.

Wie gesagt wäre schön wenn ihr mir eine schönere Methode zeigen könntet.

Als nächsten Schritt möchte ich gerne das mir dann die Werte 1-45 als Spaltendiagramm dargestellt werden.

x-Achse soll die Zahl 1-45 sein
y-Achse die Anzahl der Vorkommnisse.

Gruß Helios
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 21.06.2022, 12:02     Titel:
  Antworten mit Zitat      
Hallo Helios0518,

Willkommen im Forum!

Deine Beschreibung klingt als wärst du auf der Suche nach einer Lösung für die Erstellung eines Histogramms. Matlab hat dafür bereits die passenden Funktionen implementiert und du kannst dir sowohl die Werte ausgeben lassen (also wie oft kommt welche Zahl vor) als auch gleich das Histogramm erstellen lassen.

Solltest du mit diesen Informationen keine Lösung finden, bitte nochmal melden. Aber ich bin mir sicher du findest sowohl hier im Forum als auch in der Matlab Dokumentation die Lösung! Smile

Viele Grüße!
Steve
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Helios0815
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2022, 12:23     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort.

Du hast recht das ich auf der Suche nach einem Histogramm bin. Da ich aber für weitere Rechnungen diese Werte als eigene Matrix benötige reicht die reine Histogramm darstellen nicht aus.

Als weitere Verarbeitung möchte ich noch eine Sortierung und für weitere Auswertungen die 3 niedrigsten und 3 höchsten werte haben. Daher wäre denke ich eine.

Die Anzahl werte sollen demnach auch mit den Zahlen werten als Nx2 matrix ausgegeben werten. Bedeutet:

Anzahl x Wert

13 x 1
15 x 2
11 x 3

usw.

Aber danke für den Hinweis mit dem Histogramm. Für die aller erste Auswertung ist das sehr gut.

Gedanklich weis ich was Matlab mir ausgeben soll. Nur ich hätte gerne einen hübscheren Weg.

Daher

%Anzahl der jeweiligen Ganzzahligen werte der Matrix bestimmen
H1 = sum(HG==1);
H1 = sum(H1)
H2 = sum(HG==2);
H2 = sum(H2)
H3 = sum(HG==3);
H3 = sum(H3)
H4 = sum(HG==4);
H4 = sum(H4)
H5 = sum(HG==5);
H5 = sum(H5)
H6 = sum(HG==6);
H6 = sum(H6)
H7 = sum(HG==7);
H7 = sum(H7)
.
.
.
%Anzahl mit dem entsprechenden Wert zusammen führen in eine N x 2 Matrix
HG = [H1,1;H2,2;H3,3;H4,4;H5,5;H6,6;H7,7;...]

%Sortierung Nach Anzahl
shg = sortrows(HG,[1 2])

%Drei seltensten Wert
shglow = shg(1:3,1:2)

%Drei am meisten Vorkommenden Werte
shgmax = shg(47:50,1:2)

Vielleicht gibt es eben einen schöneren Weg

Gruß Helios
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.06.2022, 17:37     Titel:
  Antworten mit Zitat      
Hallo,

histcounts liefert dir die numerischen Werte hinter dem Histogramm.

Code:
R = randi(45, 10000, 1);
R(R == 40) = [];
[Rcount, edges] = histcounts(R, "BinMethod","integers");
T = [(edges(1:end-1)+0.5)', Rcount']


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.