Matlab Code Mittelwert, Standardabweichung? < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 00:36 Do 01.07.2004 | Autor: | Fetteratte |
Hallo, ich habe hier eine Matlab Aufgabe, mit der ich überhaupt nichts anfangen kann :(
Aufgabe:
Schreiben sie einen Matlab Code, der für eine Zufallszahlenfolge von 10 Zahlen den Durschnitt der ersten beiden, der ersten drei, der ersten vier usw. Zahlen bestimmt. ("Laufender Durchschnitt")
Berechnen sie auch die laufende Standardabweichung.
Berechnen sie schliesslich den Durchschnitt für ein Schiebefenster der Größe 5!
Also, die 10 Zufallszahlen würde ich so schreiben:
A=rand(1,10)
mean Funktion für Mittelwert
std Funktion für Standardabweichung
Wenn man dann
mean (A)
eingibt, kommt ein Wert für alle 10 Werte von A heraus
mean (A(1:2))
ergibt den Mittelwert der ersten beiden Zahlen.
Dies ist ja schon fast das Ziel, ABER wie kann man denn nun in einer Zeile den Befehl geben, den Mittelwert von den ersten beiden, ersten drei usw.
auszugeben?
Es sollen ja die einzelnen Werte nebeneinander gestellt werden.
WIE GEHT DAS?
Und zur 3. Frage: Was ist ein Schiebefenster???
verzweifelt,
Fetteratte
|
|
|
|
Hallo Fetteratte,
> wie kann man denn nun in einer Zeile den Befehl geben, den Mittelwert von den
> ersten beiden, ersten drei usw. auszugeben?
> Es sollen ja die einzelnen Werte nebeneinander gestellt
> werden.
Du möchtest also mit einer Anweisung diese Mittelwerte in ein Array bekommen? Also eine Verallgemeinerung von
[mean(A(1:2)), mean(A(1:3)), mean(A(1:4))]
bei der du nicht jeden Durchschnitt einzeln hinschreiben musst?
> Berechnen sie schliesslich den Durchschnitt für ein
> Schiebefenster der Größe 5!
> [...]
> Und zur 3. Frage: Was ist ein Schiebefenster???
Ich gehe davon aus, dass damit die Intervalle 1:5, 2:6, 3:7, 4:8, ... der Länge 5 gemeint sind.
|
|
|
|
|
> Hallo Fetteratte,
>
> > wie kann man denn nun in einer Zeile den Befehl geben,
> den Mittelwert von den
> > ersten beiden, ersten drei usw. auszugeben?
> > Es sollen ja die einzelnen Werte nebeneinander gestellt
>
> > werden.
>
> Du möchtest also mit einer Anweisung diese Mittelwerte in
> ein Array bekommen? Also eine Verallgemeinerung von
> [mean(A(1:2)), mean(A(1:3)), mean(A(1:4))]
> bei der du nicht jeden Durchschnitt einzeln hinschreiben
> musst?
Ja genau das würde ich gerne wissen *g*
>
> > Berechnen sie schliesslich den Durchschnitt für ein
> > Schiebefenster der Größe 5!
> > [...]
> > Und zur 3. Frage: Was ist ein Schiebefenster???
>
> Ich gehe davon aus, dass damit die Intervalle 1:5, 2:6,
> 3:7, 4:8, ... der Länge 5 gemeint sind.
>
>
Achso? Darauf muss man erstmal kommen. Bei Google kommt nämlich nichts vernüftiges heraus, wenn man "Matlab Schiebefenster" eingibt. Danke schön =) trotzdem hätte ich gerne noch die obere Frage beantwortet.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:49 Do 08.07.2004 | Autor: | SirJective |
> > Du möchtest also mit einer Anweisung diese Mittelwerte in
> > ein Array bekommen? Also eine Verallgemeinerung von
> > [mean(A(1:2)), mean(A(1:3)), mean(A(1:4))]
> > bei der du nicht jeden Durchschnitt einzeln hinschreiben
> > musst?
>
> Ja genau das würde ich gerne wissen *g*
Das würde ich auch gern *g* Tut mir leid, keine Ahnung.
Ich werd - wenn ich's nicht vergesse - jemanden fragen, der sich damit auskennt.
Falls es aber jemand hier weiss, dann möge der vortreten :)
Gruss,
SirJective
|
|
|
|
|
Um das Aequivalent dieses Ausdrucks zu bekommen:
> [mean(A(1:2)), mean(A(1:3)), ..., mean(A(1:length(A))]
kannst du diesen Ausdruck verwenden:
> cumsum(A(2:N)) ./ (2:length(A))
Beachte, dass die Division nicht "/", sondern "./" ist, also komponentenweise.
> > > Berechnen sie schliesslich den Durchschnitt für ein
> > > Schiebefenster der Größe 5!
Hier kannst du so tricksen:
> N = 10
steht fuer die Feldgroesse, die ja relativ beliebig ist.
Bestimme mit
> B = cumsum(A)
die kumulierten Summen. Dann berechnest du mit
> C = B(6:N) - B(1:N-5)
die Differenzen, so dass C aus den Summen von 1:5, 2:6, ... besteht.
Zuletzt ist
> D = C/5
der Mittelwert dieser je 5 Summanden.
Gruss,
SirJective
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:28 Fr 09.07.2004 | Autor: | Fetteratte |
Tausend Dank =)
Ich wäre niemals darauf gekommen, da einen anderen Befehl als "mean" zu benutzen.
lg
Fetteratte
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:44 Do 01.07.2004 | Autor: | Marc |
Hallo Fetteratte,
unter einem "laufenden Durchschnitt" würde ich verstehen, dass der Mittelwert der Zahlenreihe fortlaufend gebildet wird, und zwar so, dass nicht alle bis dahin eingegeben Zahlen bekannt sein müssen, sondern nur dir Anzahl und der Mittelwert der bis dahin eingegebene Zahl.en.
Der Mittelwert einer Zahl [mm] x_1 [/mm] wäre ja
[mm] m_1=x_1
[/mm]
von zwei Zahlen:
[mm] m_2=\bruch{x_1+x_2}{2}=\bruch{1*m_1+m_2}{2}
[/mm]
von drei Zahlen:
[mm] m_3=\bruch{x_1+x_2+x_3}{3}=\bruch{2*m_2+x_3}{3}
[/mm]
von n Zahlen:
[mm] m_n=\bruch{x_1+\ldots+x_n}{n}=\bruch{(n-1)*m_{n-1}+x_n}{n}=m_{n-1}+\bruch{1}{n}*(x_n-m_{n-1})
[/mm]
An der letzten Formel sieht man nun ganz schön, wie man den Mittelwert von n Zahlen aus dem Mittelwert der (n-1) zuvor eingegebenen Zahlen berechnen kann.
Matlab kenne ich nicht, deswegen kann ich dir bei der Umsetzung nicht helfen, das dürfte jetzt aber doch auch kein Problem mehr sein, oder?
Für die Standardabweichung würde ich versuchen, auf eine ähnliche Formel zu kommen.
Viele Grüße,
Marc
|
|
|
|