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

Breite eines Historgramms ändern.

 

Master1991
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2013, 17:29     Titel: Breite eines Historgramms ändern.
  Antworten mit Zitat      
Hi, ich hab ein Histogramm das die absoluten Häufigkeiten in verschiedenen Bereichen zählt:

Code:

ergebnisse = floor(rand(1,nCoups)*37);  


%% Modellvorstellung rot/schwarz/null:
% Die Zahl 0 representiert die 0, die Zahlen [1-19) die 18 roten Zahlen und
% die Zahlen [19-37) die 18 schwarzen Zahlen.

subplot(1,2,1)
hold on
edges = [0,1,19,37]
n = histc(ergebnisse, edges)            % produziert Histogramm mit drei 'bins'
bar(edges,n,'histc');

 


So dazu jetzt zwei Fragen:

Kann ich die Balken auch gleichbreit bekommen? Und wieso Plottet er noch einen vierten Balken der Höhe "Null"?
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 10.12.2013, 18:08     Titel:
  Antworten mit Zitat      
Hallo,

z.B. so:
Code:

edges = [0,1,19,38]
n = histc(ergebnisse, edges)            % produziert Histogramm mit drei 'bins'
bar(n(1:end-1),'histc');
set(gca,'xticklabel',{'0','rote','schwarze'})

laut doc histc zählt ein Wert zu einem Bin, wenn er kleiner gleich der linken Grenze und echt kleiner der rechten Grenze ist. Im letzten Eintrag in n sind dann alle diejenigen, die gleich der rechten Grenze sind. In diesem Fall kann man das vermeiden, indem man einfach die letzte Grenze auf 38 (statt 37) setzt. Du benutzt dann einfach nur alle Stellen aus n, außer der letzten.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Master1991
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 18.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2013, 18:19     Titel:
  Antworten mit Zitat      
Danke dir, das ist auf jedenfalls das, was ich haben wollte,

du hast Titel ergänzt, wenn ich das starte sind die Titel leider unter jedem Balken dreimal (links,mitte, rechts) ..aber die gehören ja nur unter die Mitte des jeweils richtigen.

Wie kann ich das noch ändern?

Und noch eine Frage kommt dazu

Code:

%% Modellvorstellung niedrig/hoch/null (analog rot/schwarz/null):
% Die Zahl 0 representiert die 0 (weder niedrig noch hoch),
% die Zahlen [1-19) die 18 niedrigen Zahlen und
% die Zahlen [19-37) die 18 hohen Zahlen.

subplot(a,b,3)
hold on
edges = [0,1,19,38];
n = histc(ergebnisse, edges);
bar(n(1:end-1),'histc');
set(gca,'xticklabel',{'null','1-18','19-36'});

plot([1,2],(1/37)*nCoups*[1,1]);
plot([2,3],(18/37)*nCoups*[1,1]);
plot([3,4],(18/37)*nCoups*[1,1]);

hold off


Wieso kann er mit dort nicht die Linien der theoretischen absoluten Häufigkeiten reinmalen?

Er bricht sogar mit einem Error ab: Index exceeds matrix dimensions.
Versteh ich allerdings nicht wieso da was überschritten wird.

Vll kann mir das noch jemand beantworten

(nCoups) ist die Gesamtanzahl der erzeugten Zahlen
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: 15.12.2013, 21:18     Titel:
  Antworten mit Zitat      
Hallo Master1991,
Zitat:
Wieso kann er mit dort nicht die Linien der theoretischen absoluten Häufigkeiten reinmalen?

Die Frage ist nicht klar.

Zitat:
Er bricht sogar mit einem Error ab: Index exceeds matrix dimensions.

Bitte pioste die vollständige Fehlermeldung. Vorallem ist es wichtig zu sehen, welche Zeile den Fehler verursacht.
Mit dem Debugger kannst Du die Ursache der Probleme auch selbst untersuchen: Setze einen Breakpoint in die Zeile, die scheitert. Dann lasse Dir die Werte der verwendeten Variablen anzeigen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 16.12.2013, 09:06     Titel:
  Antworten mit Zitat      
Code:
nCoups = 1e3;
ergebnisse = floor(rand(1,nCoups)*37);
figure
edges = [0,1,19,38];
n = histc(ergebnisse, edges);
bar(1:3,n(1:end-1),0.5,'histc');
set(gca,'xtick',[1,2,3]+0.5)
set(gca,'xticklabel',{'null','1-18','19-36'});
hold on
% ----- theoretische Werte ------
plot([1,2],(1/37)*nCoups*[1,1],'k-');
plot([2,3],(18/37)*nCoups*[1,1],'k-');
plot([3,4],(18/37)*nCoups*[1,1],'k-');
hold off
 

Funktioniert bei mir einwandfrei. Die Breite (width) kann als zusätzliches Argument in den bar-Befehl mit eingebracht werden (hier 0.5). Wenn die figure ihre Größe ändert, werden auch die Positionen der xticks angepasst. Diese kann man aber mit set(...,'xtick',werte) auch festlegen.

Viele Grüße,
Nrasp
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.