|
frischling95 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.02.2014, 15:43
Titel: Mittelung
|
 |
Hey,
ich habe eine Matrix A mit den Dimension 500x200. Jetzt möchte ich gerne über die Zeilen (500) mitteln und zwar alle 24 Schritte. Ich arbeite noch nicht so lange in Matlab, drum bin ich mir nicht sicher, wie ich das ganze angehen soll. Probiert hab ich es mal so:
Die Spalte halt ich konstant bei 200 und die Werte in den Zeilen sollen gemittelt werden. Die Fehlermeldung die ich bekomme:
Das ganze hab ich auch mit einem gleitendem Mittel probiert, da 500 nicht durch 24 teilbar ist.
Auch in dieser Schleife passt irgendwas noch nicht, denn wenn ich es einzeln mache mit x = mean(A(1:24,200)) kommt ein andere Wert raus, wie in der Schleife berechnet wird.
Vielleicht kann mir einer weiterhelfen.
Danke.
bye. A
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.02.2014, 17:26
Titel:
|
 |
Hallo,
du hast die Klammern falsch gesetzt. Du meintest wohl:
Wenn du das für alle 200 Spalten machen willst, würde ich es so machen:
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.02.2014, 18:03
Titel:
|
 |
Danke. Bin gerade drauf gekommen, dass ich ein gleitendes Mittel brauche, um am Ende wieder eine 500x200 Matrix rauszubekommen.
Vielleicht kannst du mir da auch noch mal weiterhelfen.
LG.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.02.2014, 18:31
Titel:
|
 |
Hallo,
wie soll die gleiche Länge erreicht werden? Für die untersten und oberen Daten sind ja keine Daten noch weiter oben oder unten vorhanden.
Grundsätzlich kann man hier filter verwenden. Siehe
für ein Beispiel, in dem über 5 Werte gemittelt wird.
Achtung: im Beispiel werden die ersten 4 Werte durch Auffüllen mit Nullen berechnet.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.02.2014, 23:05
Titel:
|
 |
hi,
danke, wusste gar nicht, dass es in Matlab Filter gibt.
Irgendwie versteh ich das Beispiel nicht so ganz.
Den 1. Teil mit ones versteh ich, dass ist zum Auffüllen des Vektors. Das könnte ich doch auch mit NaN-Werten machten
Aber warum dividiere ich dann durch windowSize? Bzw. was bedeutet 1?
Hoffentlich stell ich mich nicht gerade ganz doof an
LG.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.02.2014, 11:20
Titel:
|
 |
Hallo,
Zitat: |
Den 1. Teil mit ones versteh ich, dass ist zum Auffüllen des Vektors. |
Nein, ist es nicht.
Schau dir mal den Teil unter Algorithm an.
Mit a = 1 wird der Filter zu einem gleitenden Mittelwert.
b sind dann die Gewichte für den Mittelwert. Wenn du also gleichmäßig über drei Werte mitteln willst, wäre das [1/3 1/3 1/3], oder allgemeiner eben
Es bleibt immer noch die Frage, die ich zuvor gestellt hatte:
Zitat: |
wie soll die gleiche Länge erreicht werden? Für die untersten und oberen Daten sind ja keine Daten noch weiter oben oder unten vorhanden. |
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.02.2014, 13:38
Titel:
|
 |
ah okay danke.
Wenn ich also über 24 Werte mitteln möchte ist windowsize = 24.
die gleiche länge, hätte ich durch auffüllen mit NaN-Werte gemacht, also am Anfang des Vektors und am Ende, damit wieder ein Vektor mit der Länge 500 rauskommt.
LG.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.02.2014, 14:03
Titel:
|
 |
Hallo,
Zitat: |
die gleiche länge, hätte ich durch auffüllen mit NaN-Werte gemacht, also am Anfang des Vektors und am Ende, damit wieder ein Vektor mit der Länge 500 rauskommt. |
Dann kommt zunächst ein längerer Vektor (bzw. eine Matrix mit mehr Zeilen) heraus, aus dem du dann die richtigen Einträge herausholen musst.
Geschickter wäre:
oder je nach Interpretationsweise, ob der Mittelwerte symmetrisch oder nachlaufend sein soll, etwas der Form
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.02.2014, 16:52
Titel:
|
 |
hallo,
danke. jetzt hab ich es mit der zweiten varianten probiert, wenn ich aber nur die erste Amean zeile durchlaufen lasse bekomme ich am Ende einen Vektor mit der gleichen Länge, ohne, dass ich mit nan-Werten auffüllen musste.
LG.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|