www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

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
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenMatlabDurchschnitt eines Graphens
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "Matlab" - Durchschnitt eines Graphens
Durchschnitt eines Graphens < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Durchschnitt eines Graphens: idee
Status: (Frage) überfällig Status 
Datum: 17:06 Di 12.12.2006
Autor: mjh53

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

hallo,

ich bin noch recht frisch in matlab, daher ist diese frage wohl relativ einfach zu beantworten, nur mir fehlt gerade die idee, sollte jdn. einen tipp für mich haben, vielen dank im voraus...

ich habe einen ziemlich osszilierenden graphen, mit ca. 1000 punkten, wie kann ich denn mit dem Durchschnitt arbeiten, so dass der Graph mit Geraden überlagert wird, die jeweils über 100 Punkte reichen.... ich möchte also dann 10 Geraden haben, die meinen ursprünglichen Graphen überlagern...

gruss

mathias

        
Bezug
Durchschnitt eines Graphens: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:11 Di 12.12.2006
Autor: Martin243

Hallo,

Gegenfrage:
Woraus soll der Durchschnitt denn berechnet werden? Aus je 100 Werten? Dann hast du aber 10 waagerechte Strecken, also eine Treppenfunktion.
Oder sollen die Endpunkte der Strecken durch Mittelung von irgendetwas gewonnen werden?
Kannst du vielleicht deine Strategie erläutern (evtl. skizzieren?)


Gruß
Martin

Bezug
        
Bezug
Durchschnitt eines Graphens: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:42 Di 12.12.2006
Autor: Martin243

Noch etwas, wo du schon vom Durchschnitt sprichst:

Man kann auch den laufenden Durchschnitt der letzten k Elemente bilden. Das glättet die Kurve dann auch. Hier sollte k ungerade sein und die Druchschnittskurve nach links verschoben sein, damit der Durchschnittswert mitten im Intervall liegt und nicht an dessen Ende.
Natürlich sind die Ränder dieser Durchschnittskurve nicht aussagekräftig, aber in der Mitte sieht es ok aus.

Hier ein Beispiel:
data = rand(1,100); %Zufallsdaten, ziemlich ausgefranst
plot(data); hold on;
k=7; %Mittelung über die 7 letzten Werte
data1 = filter(ones(1,k)/k,1,data); %Berechnung des laufenden Durchschnitts
plot(data1(1+floor(k/2):end),'r');

So sieht es für die k-Werte 7, 15 und 31 aus:
[Dateianhang nicht öffentlich]


Gruß
Martin

Dateianhänge:
Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
Bezug
                
Bezug
Durchschnitt eines Graphens: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:52 Di 12.12.2006
Autor: mjh53

hallo...

ja das mit dem gleitenden durchschnitt ist erst mal super... ich würde aber auch gerne Geraden auf die Kurve legen, die die Tendenz in diesem Bereich wiederspiegelt.... also nicht nur waagrechte Geraden, sondern je nach Trend.. steigend, fallend, konstant....

gruss

mathias

Bezug
                        
Bezug
Durchschnitt eines Graphens: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:25 Di 12.12.2006
Autor: Martin243

Dann nochmal meine Frage nach deiner Strategie.

Falls dir das lokale Verhalten innerhalb jedes Intervalls reicht, dann könnte man es mit einer Regressionsgeraden pro Intervall versuchen. Das geht mit der Funktion polyfit und liefert z.B. bei 1000 Zufallswerten bei einer Unterteilung in 100er-Intervalle folgendes Bild:

[Dateianhang nicht öffentlich]


Gruß
Martin

Dateianhänge:
Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
Bezug
                
Bezug
Durchschnitt eines Graphens: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 10:52 Mi 13.12.2006
Autor: mjh53

hallo...

zwei Fragen dazu... einmal verstehe ich folgendes nicht ganz...
da ich das selbe problem hatte, frage ich nun nach...damals sah die zeile so aus..

plot(startzeit:(endzeit-startzeit)/(size(kurs,2)-1):endzeit,kurs);
nun
plot(kurs(1+floor(k/2):end),'r');
es geht um die "1"... einmal ziehst du sie ab, das andere mal addierst du sie... mir ist schon klar, dass das eine nichts mit dem anderen zu tun hat, und das dies ein genereller vorgang ist bei, um ein bestimmtes problem zu lösen... welches denn??

zweite Frage... zufällig möchte ich exakt die den ersten plot mit dem zweiten glätten... da habe ich aber das problem mit der x-achse... wie kann ich die x-achse beim zweiten plot dem ersten anpassen...

gruss

mathias


Bezug
                        
Bezug
Durchschnitt eines Graphens: Antwort
Status: (Antwort) fertig Status 
Datum: 13:48 Mi 13.12.2006
Autor: Martin243

Hallo,

die Sache mit der Eins... Richtig, die beiden Einsen haben nichts miteinander zu tun und lösen zwei grundverschiedene Probleme:

1. plot(startzeit:(endzeit-startzeit)/(size(kurs,2)-1):endzeit,kurs);
Hier geht es darum, dass wir genauso viele x-Werte haben wollen wie y-Werte vorhanden sind. Wir geben dabei den ersten und den letzten x-Wert vor. Dazwischen liegt ein Intervall. Allgemein unterteilen n Stützstellen ein großen Intervall in (n-1) kleinere.
Da wir size(kurs,2) y-Werte haben, wollen wir das Intervall [startzeit,endzeit] in (size(kurs,2)-1) kleinere Intervalle der Länge (endzeit-startzeit)/(size(kurs,2)-1) unterteilen.

2. plot(kurs(1+floor(k/2):end),'r');
Hier geht es darum, dass wir über eine ungerade Anzahl von Werten gemittelt haben. Das hat den Vorteil, dass es ein mittleres Element gibt. Da die Mittelwerte aber bei der filter-Funktion immer am Ende des Intervalls stehen, müssen wir sie um die "kleinere" Hälfte von k nach links verschieben. Wir ziehen von k diese "kleinere" Hälfte ab un erhalten als Startindex:
$k - floor(k/2) = 1 + floor(k/2)$, weil k ungerade ist und deshalb gilt:
$k = 2*floor(k/2) + 1$
(floor entspricht ja der Gaußklammer)


Die zweite Frage habe ich leider nicht verstanden... Du willst einen Plot mit einem anderen glätten?!?


Gruß
Martin

Bezug
                                
Bezug
Durchschnitt eines Graphens: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:36 Mi 13.12.2006
Autor: mjh53

hallo...

ich habe meine daten (kurs) erzeugt und stelle sie mittles plot graphisch dar... die x-achse soll dabei nun die zeit darstellen, daher habe ich anfangszeit und endzeit mittles datenum() erzeugt....
-->
plot(startzeit:(endzeit-startzeit)/(size(kurs,2)-1):endzeit,kurs);

nun möchte ich diesen graphen glätten...
-->
plot(kurs(1+floor(k/2):end),'r');

dabei bekomme ich aber probleme mit der x-achse, die ich nicht in den begriff bekomme... ich müsste doch dem zweiten plot die x-achsenwerte des ersten mitübergeben... wie mir dies gelingen kann ist nun meine frage....

gruss

mathias

Bezug
                                        
Bezug
Durchschnitt eines Graphens: Antwort
Status: (Antwort) fertig Status 
Datum: 21:44 Mi 13.12.2006
Autor: Martin243

Aaah,

wieso sagst du nicht einfach:
plot(startzeit:(endzeit-startzeit)/(size(kurs,2)-1):endzeit, kurs(1+floor(k/2):end),'r');

Wenn plot einen Vektor übergeben bekommt, interpretiert er diesen als y-Werte und nimmt einfach 1,2,3... als x-Werte. Bei zwei Vektoren interpretiert er den ersten als x- und den zweiten als y-Werte.


Gruß
Martin

Bezug
                        
Bezug
Durchschnitt eines Graphens: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:20 Fr 15.12.2006
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]