matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenPhysikGnuplot
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Geschichte • Erdkunde • Sozialwissenschaften • Politik/Wirtschaft
Forum "Physik" - Gnuplot
Gnuplot < Physik < Naturwiss. < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Physik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Gnuplot: Histogram
Status: (Frage) beantwortet Status 
Datum: 17:41 Mo 11.05.2015
Autor: MathTrivial

Ich habe folgendes Problem:

Gegeben:

dat-Datei die genau eine Spalte enthält mit 260 Einträgen.
Die Werte gehen von 1,024 bis 1,3485.
Jetzt möchte ich ein Histogram erstellen.
Das klappt auch so weit.

für die Binanzahl nehme ich 16 Bins, also ungefährt der Wert der Wurzel aus der Anzahl der Messwerte.
Dann lege ich folgendes fest:

n = 16.0 # anzahl bins
max = 1.348 # maximaler wert
min = 1.024 # minimaler wert
rows = 260.0 # anzahl messwerte

gaus(x)= a / (sigma*sqrt(2.*pi))*exp(-0.5*((x-mu)/sigma)**2.)
width = (max - min) / n
hist(x, width) = width * floor(x / width) + width / 2.0

mein Plotbefehl:

plot "test.txt" u (hist($1, width)):(100. / rows) smooth freq w boxes

Hist sollte mir die erste und einzige Spalte an Werten in die Bins mit der Breite width reinpacken für die x-Achse und für die y-Achse die relative häufigkeit.

Wie kann ich jetzt mit Gauß mein Histogram fiten?

fit gaus(x) "test.txt" via a,sigma,mu  spuckt mir nur mist aus.
fit gaus(x) "test.txt" u (hist($1, width)):(100. / rows)  via a,sigma,mu   genauso der zweite Befehl.

Ich meine es ist kein Problem nen Gauß in Werte zu legen, die bereits als Histogrammwerte vorliegen, aber wie soll das hier klappen?

Der Fit sieht jedes mal so aus, als würde Gnuplot versuchen in die Urdaten zu fiten, sprich kein Histogramm.

Habe selbst die Parameter a,sigma,mu als Startwert festgelegt, was mir genau die richtige Kurve gibt.

Kann man hier die Datei anhängen?





        
Bezug
Gnuplot: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:18 Mo 11.05.2015
Autor: chrisno

Du kannst eine Datei anhängen, dazu gibt es unterhalb des Eingabefensters einen blauen Text "Datei-Anhang". Klicke drauf und füge den Text[url=attach:1058219:1] Datei-Anhang[/url](ohne das attach und die Zahl, die wird dann erzeugt), der dann im Hilfsfenster erscheint, deiner Eingabe zu.

Gibt es in http://www.gnuplotting.org/calculating-histograms/ die Antwort auf Deine Frage?

Bezug
        
Bezug
Gnuplot: Antwort
Status: (Antwort) fertig Status 
Datum: 19:24 Mo 11.05.2015
Autor: Event_Horizon

Hallo!

Gnuplot kann ja selber keine Histogramme berechnen, daher dieser Trick.

Ganz wesentlich daran ist aber das


plot "test.txt" u (hist($1, width)):(100. / rows) smooth freq w boxes

Die Funktion hist() sorgt dafür, daß alle Wertepaare, die in einem bin liegen, den gleichen x-Wert bekommen. Und das smooth freq zählt, wie oft jeder x-Wert vorkommt, und das ist dann die gewünschte Höhe des Bins. (mit ein wenig Umrechnung)

Das bedeutet aber auch, daß der fit-Befehl auch ein smooth freq enthalten müßte, um dieses Zählen zu berücksichtigen.

Ohne es jetzt zu überprüfen meine ich aber, daß der fit-Befehl das aber nicht kann. Probier es einfach aus (zwischen using und via)



Nebenbei, deine Gaußfunktion ist nicht ganz ideal. Benutz besser

[mm] g(x)=\frac{A}{\sqrt{2\pi\sigma^2}}*\exp\left(-\frac{1}{2}*\left(\frac{x-x_c}{\sigma}\right)^2\right) [/mm]

Nur so ist das A tatsächlich die Fläche unter dem Gauß, welche man ja häufig haben möchte. Das [mm] \sigma [/mm] unter der Wurzel sorgt dafür, daß A immer positiv bleibt. [mm] \sigma [/mm] selbst kann jedoch negativ werden, das macht der Formel ja nix.

Bezug
                
Bezug
Gnuplot: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 21:45 Mo 11.05.2015
Autor: MathTrivial

Super, das mit dem smooth freq war mir nicht so bewusst.
Das trägt schonmal zum Verständnis bei.
Leider kann Gnuplot wohl wirklich nicht vor dem fiten noch die Häufigkeit zählen.
Dann ist Gnuplot ja wirklich mist.
Gibt es da denn keine andere Methode das im Gnuplot umzusetzen?
Oder kennst du eventuell ein anderes Programm, was nicht allzu schwer ist um ein Histogramm zu fiten?
ROOT ist mir ein Begriff, aber da muss man ja fast programmieren können, um sowas umzusetzen.

Schöne Grüße

Daniel

Bezug
                        
Bezug
Gnuplot: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:15 Mo 11.05.2015
Autor: chrisno

Auf der Seite, zu der ich den Link angegeben habe, wird gezeigt, wie Du die Werte der Histogramms in eine Datei schreibst und anschließend den Gauss an diesen Datensatz anpasst.

Bezug
                                
Bezug
Gnuplot: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:39 Di 12.05.2015
Autor: MathTrivial

Super danke, werd mich damit mal auseinandersetzen, ist wohl die beste Idee.

Bezug
                        
Bezug
Gnuplot: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:49 Di 12.05.2015
Autor: Event_Horizon

Naja, Gnuplot ist in erster Linie zum Darstellen von Daten und Funktionen da, und erlaubt auch gewisse Berechnungen, hauptsächlich innerhalb einer Zeile der Daten.
Für eine richtige Datenanalyse ist es nicht gedacht, daher  funktionieren Histogramme auch nur über Umwege.

Bevor du dich mit ROOT anlegst, solltest du dich nach anderen Möglichkeiten umsehen, denn ROOT kann schon recht komplex und vor allem fies werden. Zugegeben, es ist darauf zugeschnitten, mit Histogrammen zu arbeiten, und das kann es meist auch recht gut. Allerdings gibt es vor, C++ zu sein, hat aber mit der Idee dahinter oft nur wenig gemeinsam.

Schau dir mal Chrisnos Link an, da wird gezeigt. wie man die Daten mit gnuplot statt auf dem Bildschirm auszugeben, in eine Datei schreibt - danach kann man diese Datei ganz normal weiter verarbeiten.

Bezug
                                
Bezug
Gnuplot: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:27 Di 12.05.2015
Autor: MathTrivial

load 'hist.fct'
plot 'histogram.txt' i 0 @hist ls [mm] 1,\ [/mm]
     ''              i 1 @hist ls 2


also habe mir eine fct-Datei mit gedit erstellt die genau den vorgeschrieben Inhalt hat

hist = 'u (binwidth*(floor(($1-binstart)/binwidth)+0.5)+binstart):(1.0) smooth freq w boxes' "

Ich sage Gnuplot wo mein Verzeichnis der Testdatei ist.
Der load-Befehl funktioniert, zumindest keine Fehlermeldung.
Allerdings sagt er mir jedes mal beim plot-befehl:

invalid character @

Leider sehe ich auf der Seite auch keine konkrete Erklärung, was i 0 @hist ls 1 für eine Syntax sein soll.

Was mache ich denn falsch, ich versteh es nicht.

Bezug
                                        
Bezug
Gnuplot: Antwort
Status: (Antwort) fertig Status 
Datum: 09:19 Mi 13.05.2015
Autor: Event_Horizon

Hallo!

Das @hist scheint so ne Art Ersetzung zu sein, nach dem Motto "Ersetze dies durch eine Definition, die ich wo anders gegeben habe". Ich hab das noch nie benutzt.
Hier mal ein Minimalbeispiel:


set table "newData.csv"
set polar
plot sin(t)*cos(t)
unset table

reset

plot "newData.csv" with lines


Im oberen Teil wird auf Polarkoordinaten geschaltet, um ein Kleeblatt zu plotten. Allerdings landet das ganze als Tabelle in einer neuen Datei "newData.csv". Mit dem reset werden alle Einstellungen wieder auf Standard gestellt, und anschließend werden die Daten aus der Datei geplottet, in ein ganz normales kartesisches Koordinatensystem.

Wenn du im oberen Teil nun deinen Code einfügst, der das Histogramm erzeugt, bekommst du eine Datei, in der das Histogramm direkt drin steht. Und dann kannst du das auch fitten.



Bezug
                                                
Bezug
Gnuplot: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:30 Mi 13.05.2015
Autor: MathTrivial

Ich danke dir recht herzlich für deine Mühen,
wenn ich dich kennen würde, würd ich dir nen Bier ausgeben =)

Habs jetzt durch nen bisschen rumprobieren mit der Funktion "set table"
wunderbar hinbekommen.

Schöne Grüße

Daniel

Bezug
                        
Bezug
Gnuplot: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:56 Di 12.05.2015
Autor: chrisno

Für die kombinierte Datenauswertung und Präsentation ist R ein vielgelobtes Werkzeug.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Physik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]