Tuesday, 28 November 2017

Weighted Moving Average Filter Matlab


Download movAv. m (siehe auch movAv2 - eine aktualisierte Version, die eine Gewichtung erlaubt) Beschreibung Matlab enthält Funktionen namens movavg und tsmovavg (Zeitreihen gleitender Durchschnitt) in der Financial Toolbox, movAv ist entworfen, um die grundlegende Funktionalität dieser zu replizieren. Der Code hier gibt ein schönes Beispiel für die Verwaltung von Indizes innerhalb Schleifen, die verwirrend sein können, um mit zu beginnen. Ive bewusst bewahrt den Code kurz und einfach, um diesen Prozess klar zu halten. MovAv führt einen einfachen gleitenden Durchschnitt durch, der in einigen Situationen verwendet werden kann, um laute Daten wiederherzustellen. Es funktioniert, indem man den Mittelwert der Eingabe (y) über ein gleitendes Zeitfenster nimmt, dessen Größe durch n angegeben ist. Je größer n ist, desto größer ist der Glanzgrad der Wirkung von n relativ zur Länge des Eingangsvektors y. Und effektiv (gut, Art von) schafft einen Tiefpass-Frequenz-Filter - siehe die Beispiele und Überlegungen Abschnitt. Da die Menge an Glättung, die durch jeden Wert von n gegeben wird, relativ zu der Länge des Eingangsvektors ist, ist es immer wert, verschiedene Werte zu testen, um zu sehen, was angemessen ist. Denken Sie auch daran, dass n Punkte in jedem Durchschnitt verloren gehen, wenn n 100 ist, die ersten 99 Punkte des Eingangsvektors enthalten nicht genügend Daten für einen 100pt Durchschnitt. Dies kann durch Stapeln von Durchschnittswerten etwas vermieden werden, z. B. der Code und das Diagramm unten vergleichen eine Anzahl unterschiedlicher Längenfensterdurchschnitte. Beachten Sie, wie glatt 1010pt mit einem einzigen 20pt Durchschnitt verglichen wird. In beiden Fällen gehen insgesamt 20 Datenpunkte verloren. Erstellen Sie xaxis x1: 0.01: 5 erzeugen Rauschen rausschalten 4 Rausch repmat (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) Rauschumformung (Rauschen, 1, Länge (Rauschen) noiseReps) Generieren Sie ydata noise yexp ( (Y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt (X, y, y2, y3, y4, y5, y6) Legende (Rohdaten, 10pt gleitender Durchschnitt, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel (x, y, y2, y3, y4, y5, y6) Y) Titel (Vergleich der gleitenden Durchschnitte) movAv. m Code Durchlauffunktion Ausgang movAv (y, n) Die erste Zeile definiert den Funktionsnamen, Ein - und Ausgänge. Die Eingabe x sollte ein Vektor von Daten sein, um den Durchschnitt zu durchführen, n sollte die Anzahl der Punkte sein, um den Durchschnitt über die Ausgabe auszuführen, wird die gemittelten Daten enthalten, die von der Funktion zurückgegeben werden. VorbereitungsausgangNaN (1, Numel (y)) Mittelpunkt von n midPoint Runde finden (n2) Die Hauptarbeit der Funktion erfolgt in der for-Schleife, aber vor dem Start werden zwei Dinge vorbereitet. Zuerst wird die Ausgabe als NaNs vorgegeben, dies diente zwei Zwecken. Zuerst ist die Vorveröffentlichung in der Regel gute Praxis, da es das Gedächtnis-Jonglieren reduziert, das Matlab zu tun hat, zweitens macht es es sehr einfach, die gemittelten Daten in eine Ausgabe zu bringen, die die gleiche Größe wie der Eingangsvektor hat. Dies bedeutet, dass die gleiche xaxis später für beide verwendet werden kann, was für das Plotten bequem ist, alternativ können die NaNs später in einer Zeile des Codes entfernt werden (Ausgabeausgabe (Die Variable midPoint wird verwendet, um die Daten in dem Ausgangsvektor auszurichten N 10, 10 Punkte werden verloren, weil für die ersten 9 Punkte des Eingangsvektors es nicht genügend Daten gibt, um einen 10-Punkt-Durchschnitt zu nehmen. Da die Ausgabe kürzer als die Eingabe ist, muss sie ordnungsgemäß ausgerichtet werden Verwendet werden, so dass eine gleiche Menge an Daten am Anfang und am Ende verloren geht und die Eingabe wird mit dem Ausgang durch die NaN-Puffer, die bei der Vorverteilung der Ausgabe erzeugt werden, mit einer Ausrichtung von 1: Länge (y) - n, (A: b) ban berechnen Mittelwert (amidPoint) Mittelwert (y (a: b)) Ende In der for-Schleife selbst wird ein Mittelwert über jedes aufeinanderfolgende Segment der Eingabe übernommen. Die Schleife läuft für a Definiert als 1 bis zur Länge des Eingangs (y), abzüglich der Daten, die verloren gehen (n) Wenn der Eingang 100 Punkte lang ist und n 10 ist, läuft die Schleife von (a) 1 bis 90. Dies ist möglich Bedeutet, dass der erste Index des zu gemittelten Segments bereitgestellt wird. Der zweite Index (b) ist einfach an-1. Also auf der ersten iteration, a1. N10 So b 11-1 10. Der erste Durchschnitt wird über y (a: b) übernommen. Oder x (1:10). Der Durchschnitt dieses Segments, das ein einzelner Wert ist, wird im Ausgang am Index amidPoint gespeichert. Oder 156. Auf der zweiten Iteration, a2. B 210-1 11 So wird der Mittelwert über x (2:11) übernommen und im Ausgang (7) gespeichert. Bei der letzten Iteration der Schleife für eine Eingabe der Länge 100, a91. B 9010-1 100 so wird der Mittelwert über x (91: 100) übernommen und im Ausgang (95) gespeichert. Dies verlässt den Ausgang mit insgesamt n (10) NaN-Werten am Index (1: 5) und (96: 100). Beispiele und Überlegungen Umzugsdurchschnitte sind in manchen Situationen sinnvoll, aber sie sind nicht immer die beste Wahl. Hier sind zwei Beispiele, wo sie nicht unbedingt optimal sind. Mikrofonkalibrierung Dieser Satz von Daten repräsentiert die Pegel jeder Frequenz, die von einem Lautsprecher erzeugt und von einem Mikrofon mit einer bekannten linearen Antwort aufgezeichnet wird. Der Ausgang des Lautsprechers variiert mit der Frequenz, aber wir können diese Variation mit den Kalibrierdaten korrigieren - die Ausgabe kann in der Höhe angepasst werden, um die Schwankungen der Kalibrierung zu berücksichtigen. Beachten Sie, dass die Rohdaten verrauscht sind - das bedeutet, dass eine kleine Frequenzänderung eine große, unberechenbare Änderung der Ebene zu berücksichtigen scheint. Ist das realistisch oder ist dies ein Produkt der Aufzeichnungsumgebung Es ist in diesem Fall sinnvoll, einen gleitenden Durchschnitt anzuwenden, der die Pegelfrequenzkurve glättet, um eine Eichkurve zu liefern, die etwas weniger unregelmäßig ist. Aber warum ist dies nicht optimal in diesem Beispiel Mehr Daten wäre besser - Mehrere Kalibrierungen läuft gemittelt zusammen würde das Rauschen im System zerstören (solange es zufällig) und eine Kurve mit weniger subtilen Details verloren zu machen. Der gleitende Durchschnitt kann sich nur annähern, und kann einige höhere Frequenz Dips und Peaks aus der Kurve, die wirklich existieren zu entfernen. Sinuswellen Mit einem gleitenden Durchschnitt auf Sinuswellen hebt sich zwei Punkte hervor: Die allgemeine Frage der Wahl einer vernünftigen Anzahl von Punkten, um den Durchschnitt zu übertreffen. Es ist einfach, aber es gibt effektivere Methoden der Signalanalyse als die Mittelung von oszillierenden Signalen im Zeitbereich. In dieser Grafik ist die ursprüngliche Sinuswelle blau aufgetragen. Lärm wird hinzugefügt und als orangefarbene Kurve aufgetragen. Ein gleitender Durchschnitt wird an verschiedenen Punkten durchgeführt, um zu sehen, ob die ursprüngliche Welle wiederhergestellt werden kann. 5 und 10 Punkte liefern vernünftige Ergebnisse, aber entfernen Sie nicht das Geräusch ganz, wo, wie eine größere Anzahl von Punkten beginnen, Amplitude Detail zu verlieren, wie der Durchschnitt erstreckt sich über verschiedene Phasen (denken Sie daran, die Welle oscilates um Null, und Mittel (-1 1) 0) . Ein alternativer Ansatz wäre, ein Tiefpassfilter zu konstruieren, als es auf das Signal im Frequenzbereich angewendet werden kann. Ich werde nicht ins Detail gehen, da es über den Rahmen dieses Artikels hinausgeht, aber da das Rauschen beträchtlich höhere Frequenz als die Wellen-Grundfrequenz ist, wäre es in diesem Fall ziemlich einfach, einen Tiefpassfilter zu konstruieren, als die Hochfrequenz zu entfernen Lärm. Ich muss einen gleitenden Durchschnitt über eine Datenreihe innerhalb einer for-Schleife berechnen. Ich muss den gleitenden Durchschnitt über N9 Tage bekommen. Das Array Im Computing in ist 4 Serien von 365 Werten (M), die selbst Mittelwerte eines anderen Satzes von Daten sind. Ich möchte die Mittelwerte meiner Daten mit dem gleitenden Durchschnitt in einer Handlung darstellen. Ich googelte ein bisschen über bewegte Durchschnitte und den Conv-Befehl und fand etwas, was ich versucht habe, in meinem Code zu implementieren: Also grundsätzlich berechne ich meinen Mittel und plot es mit einem (falschen) gleitenden Durchschnitt. Ich habe den WTS-Wert direkt von der Mathworks-Website ausgewählt, also ist das falsch. (Quelle: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mein Problem aber ist, dass ich nicht verstehe, was diese wts ist. Könnte jemand erklären, wenn es etwas mit den Gewichten der Werte zu tun hat: das ist in diesem Fall ungültig. Alle Werte werden gleich gewichtet. Und wenn ich das ganz falsch mache, könnte ich mir etwas helfen. Mein herzlichster Dank. Fragte am 23.09 um 19:05 Mit conv ist eine hervorragende Möglichkeit, einen gleitenden Durchschnitt zu implementieren. In dem Code, den Sie verwenden, ist wts, wie viel Sie jeden Wert wiegen (wie Sie erraten). Die Summe dieses Vektors sollte immer gleich eins sein. Wenn du deinen Wert gleichmäßig erwärmen möchtest und eine Größe N bewegter Filter machst, dann würdest du es tun wollen Mit dem gültigen Argument in conv wird es darum gekommen, weniger Werte in Ms zu haben, als du in M ​​hast. Benutze das gleiche, wenn du die Auswirkungen von nicht beachtet hast Nullpolsterung. Wenn Sie die Signalverarbeitung Toolbox können Sie cconv verwenden, wenn Sie einen kreisförmigen gleitenden Durchschnitt versuchen wollen. Etwas wie Sie sollten die conv und cconv Dokumentation für weitere Informationen lesen, wenn Sie havent bereits haben. Sie können Filter verwenden, um einen laufenden Durchschnitt zu finden, ohne eine for-Schleife zu verwenden. Dieses Beispiel findet den laufenden Durchschnitt eines 16-Element-Vektors unter Verwendung einer Fenstergröße von 5. 2) glatt als Teil der Curve Fitting Toolbox (die in den meisten Fällen verfügbar ist) yy glatt (y) glättet die Daten im Spaltenvektor Y mit einem gleitenden durchschnittlichen Filter. Die Ergebnisse werden im Spaltenvektor yy zurückgegeben. Die Standardspanne für den gleitenden Durchschnitt ist 5.FIR-Filter, IIR-Filter und die lineare Konstantkoeffizienten-Differenzgleichung Causal Moving Average (FIR) Filter Wir haben Systeme diskutiert, in denen jede Abtastung der Ausgabe eine gewichtete Summe von (gewisse der ) Die Proben der Eingabe. Nehmen wir ein kausal gewichtetes Summensystem, wobei Kausal bedeutet, dass eine gegebene Ausgabeprobe nur von der aktuellen Eingangsabtastung und anderen Eingaben früher in der Sequenz abhängt. Weder lineare Systeme im Allgemeinen noch endliche Impulsantwortsysteme müssen kausal sein. Allerdings ist die Kausalität für eine Art von Analyse bequem, die sich bald erkundigen würde. Wenn wir die Eingaben als Werte eines Vektors x symbolisieren. Und die Ausgänge als entsprechende Werte eines Vektors y. Dann kann ein solches System geschrieben werden, wo die b-Werte auf die aktuellen und früheren Eingangsmuster angewendet werden, um die aktuelle Ausgabeprobe zu erhalten. Wir können an den Ausdruck als Gleichung denken, mit dem Gleichheitszeichen Bedeutung gleich oder als prozedurale Anweisung, mit dem Gleichheitszeichen Bedeutung Zuweisung. Er läßt den Ausdruck für jeden Ausgangssample als MATLAB-Schleife von Zuweisungsanweisungen schreiben, wobei x ein N-Längenvektor von Eingangsabtastwerten ist und b ein M-Längenvektor von Gewichten ist. Um mit dem Sonderfall am Anfang umzugehen, werden wir x in einen längeren Vektor einfügen, dessen erste M-1-Abtastwerte null sind. Wir schreiben die gewichtete Summe für jedes y (n) als ein inneres Produkt und werden einige Manipulationen der Eingaben (wie Umkehrung b) zu diesem Zweck durchführen. Diese Art von System wird oft als gleitender Durchschnittsfilter bezeichnet, aus offensichtlichen Gründen. Aus unseren früheren Diskussionen sollte klar sein, dass ein solches System linear und verschiebungsinvariant ist. Natürlich wäre es viel schneller, die MATLAB-Faltungsfunktion conv () anstelle unseres mafilt () zu verwenden. Anstatt die ersten M-1-Abtastwerte der Eingabe als Null zu betrachten, könnten wir sie als die gleichen M-1-Samples ansehen. Dies ist das gleiche wie die Behandlung der Eingabe als periodisch. Nun benutze cmafilt () als den Namen der Funktion, eine kleine Modifikation der früheren mafilt () - Funktion. Bei der Bestimmung der Impulsantwort eines Systems gibt es gewöhnlich keinen Unterschied zwischen diesen beiden, da alle nicht initialen Samples der Eingabe null sind: Da ein solches System linear und verschiebungsinvariant ist, wissen wir, dass seine Wirkung auf irgendwelche Sinusoid wird nur skalieren und verschieben. Hier ist es wichtig, dass wir die kreisförmige Version verwenden. Die kreisförmig gefaltete Version wird verschoben und skaliert, während die Version mit normaler Faltung am Anfang verzerrt ist. Lets sehen, was die genaue Skalierung und Verschiebung ist durch die Verwendung einer fft: Sowohl Eingang und Ausgang haben Amplitude nur bei Frequenzen 1 und -1, die so ist, wie es sein sollte, da die Eingabe war eine Sinusoid und das System war linear. Die Ausgangswerte sind um ein Verhältnis von 10.62518 1.3281 größer. Das ist der Gewinn des Systems. Was ist mit der Phase Wir müssen nur sehen, wo die Amplitude ungleich Null ist: Die Eingabe hat eine Phase von pi2, wie wir angefordert haben. Die Ausgangsphase wird um ein zusätzliches 1.0594 (mit entgegengesetztem Vorzeichen für die negative Frequenz) oder etwa 16 eines Zyklus nach rechts verschoben, wie wir auf dem Diagramm sehen können. Nun können wir eine Sinuskurve mit der gleichen Frequenz (1) ausprobieren, aber anstelle von Amplitude 1 und Phase pi2 können wir Amplitude 1.5 und Phase 0 ausprobieren. Wir wissen, dass nur die Frequenz 1 und -1 keine Amplitude von Null haben Bei ihnen: Wieder ist das Amplitudenverhältnis (15.937712.0000) 1.3281 - und für die Phase wird es wieder um 1.0594 verschoben. Wenn diese Beispiele typisch sind, können wir die Wirkung unseres Systems vorhersagen (Impulsantwort .1 .2 .3 .4 .5) bei jedem Sinus mit Frequenz 1 - wird die Amplitude um einen Faktor von 1.3281 erhöht und die (positive Frequenz) Phase wird um 1.0594 verschoben. Wir konnten die Wirkung dieses Systems auf Sinusoiden anderer Frequenzen nach denselben Methoden berechnen. Aber es gibt einen viel einfacheren Weg, und eine, die den allgemeinen Punkt festlegt. Da (kreisförmige) Faltung im Zeitbereich eine Multiplikation im Frequenzbereich bedeutet, folgt daraus, dass mit anderen Worten die DFT der Impulsantwort das Verhältnis der DFT des Ausgangssignals zur DFT des Eingangs ist. In dieser Beziehung sind die DFT-Koeffizienten komplexe Zahlen. Da abs (c1c2) abs (c1) abs (c2) für alle komplexen Zahlen c1, c2 ist, sagt diese Gleichung, dass das Amplitudenspektrum der Impulsantwort immer das Verhältnis des Amplitudenspektrums des Ausganges zu dem des Eingangs ist . Im Fall des Phasenspektrums gilt der Winkel (c1c2) - Winkel (c1) - Winkel (c2) für alle c1, c2 (mit der Maßgabe, dass Phasen, die sich durch n2pi unterscheiden, als gleich angesehen werden). Daher ist das Phasenspektrum der Impulsantwort immer die Differenz zwischen den Phasenspektren des Ausgangssignals und dem Eingang (mit welchen Korrekturen um 2pi erforderlich sind, um das Ergebnis zwischen - pi und pi zu halten). Wir können die Phaseneffekte deutlicher sehen, wenn wir die Darstellung der Phase auspacken, d. h. wenn wir verschiedene Vielfache von 2pi addieren, um die Sprünge zu minimieren, die durch die periodische Natur der angle () - Funktion erzeugt werden. Obwohl die Amplitude und die Phase gewöhnlich für die grafische und sogar tabellarische Darstellung verwendet werden, da sie eine intuitive Möglichkeit sind, über die Auswirkungen eines Systems auf die verschiedenen Frequenzkomponenten ihrer Eingabe nachzudenken, sind die komplexen Fourierkoeffizienten algebraisch nützlicher, da sie es erlauben Der einfache Ausdruck der Beziehung Der allgemeine Ansatz, den wir soeben gesehen haben, wird mit beliebigen Filtern des skizzierten Typs arbeiten, bei dem jede Ausgabeprobe eine gewichtete Summe von einigen Satz von Eingabeproben ist. Wie bereits erwähnt, werden diese oft als Finite Impulse Response Filter bezeichnet, da die Impulsantwort von endlicher Größe oder manchmal Moving Average Filter ist. Wir können die Frequenzgangcharakteristiken eines solchen Filters aus der FFT seiner Impulsantwort bestimmen, und wir können auch neue Filter mit gewünschten Eigenschaften durch IFFT aus einer Spezifikation des Frequenzganges entwerfen. Autoregressive (IIR) Filter Es wäre wenig sinnvoll, Namen für FIR-Filter zu haben, es sei denn, es gab irgendeine andere Art, um sie zu unterscheiden, und so werden diejenigen, die Pragmatik studiert haben, nicht überrascht sein zu erfahren, dass es tatsächlich eine andere Hauptart gibt Des linearen zeitinvarianten Filters. Diese Filter werden manchmal rekursiv genannt, da der Wert der vorherigen Ausgänge (sowie vorherige Eingaben) wichtig ist, obwohl die Algorithmen im allgemeinen mit iterativen Konstrukten geschrieben werden. Sie werden auch Infinite Impulse Response (IIR) Filter genannt, weil im Allgemeinen ihre Reaktion auf einen Impuls für immer weiter geht. Sie werden auch manchmal autoregressive Filter genannt, weil man die Koeffizienten als das Ergebnis der linearen Regression zum Ausdruck bringen kann, um Signalwerte als Funktion früherer Signalwerte auszudrücken. Die Beziehung von FIR - und IIR-Filtern kann deutlich in einer linearen Konstantkoeffizienten-Differenzgleichung gesehen werden, d. h. eine gewichtete Summe von Ausgängen, die gleich einer gewichteten Summe von Eingängen ist, einstellen. Dies ist wie die Gleichung, die wir früher für den kausalen FIR-Filter gegeben haben, außer dass zusätzlich zu der gewichteten Summe der Eingänge auch eine gewichtete Summe der Ausgänge vorliegt. Wenn wir dies als eine Prozedur zur Erzeugung von Ausgangsmustern bedenken wollen, müssen wir die Gleichung neu anordnen, um einen Ausdruck für die aktuelle Ausgabeprobe y (n) zu erhalten. Annahme der Konvention, dass a (1) 1 (zB durch Skalierung anderer als Und bs) können wir den 1a (1) Term beenden: y (n) b (1) x (n) b (2) x (n-1). B (Nb1) x (n-nb) - a (2) y (n-1) -. - a (Na1) y (n-na) Wenn alle a (n) andere als a (1) null sind, reduziert dies auf unseren alten Freund den kausalen FIR-Filter. Dies ist der allgemeine Fall eines (kausalen) LTI-Filters und wird durch den MATLAB-Funktionsfilter implementiert. Betrachten wir den Fall, bei dem die b-Koeffizienten außer b (1) null sind (anstelle des FIR-Falles, wobei a (n) null sind): In diesem Fall wird der aktuelle Ausgangsabtastwert y (n) als a berechnet (N-1), y (n-2) usw. Um eine Vorstellung davon zu bekommen, was mit solchen Filtern passiert, kann man mit dem Fall beginnen, wo: Das heißt, die aktuelle Ausgangsabtastung ist die Summe der aktuellen Eingangsabtastung und der Hälfte der vorherigen Ausgangsabtastung. Nun nehmen Sie einen Eingangsimpuls durch ein paar Zeitschritte, eine zu einer Zeit. Es sollte an dieser Stelle klar sein, dass wir einfach einen Ausdruck für den n-ten Ausgangssamplewert schreiben können: Es ist nur (Wenn MATLAB von 0 gezählt wird, wäre dies einfach .5n). Da das, was wir berechnen, die Impulsantwort des Systems ist, haben wir beispielhaft gezeigt, dass die Impulsantwort tatsächlich unendlich viele Proben ohne Null haben kann. Um diesen trivialen Filter erster Ordnung in MATLAB zu implementieren, könnten wir Filter verwenden. Der Aufruf wird so aussehen: und das Ergebnis ist: Ist das Geschäft wirklich noch linear Wir können das empirisch betrachten: Für einen allgemeineren Ansatz betrachten wir den Wert eines Ausgangsmusters y (n). Durch sukzessive Substitution können wir dies schreiben wie dies ist wie unser alter Freund die Faltungs-Summenform eines FIR-Filters, mit der Impulsantwort, die durch den Ausdruck .5k gegeben wird. Und die Länge der Impulsantwort ist unendlich. So werden die gleichen Argumente, die wir früher gezeigt haben, dass FIR-Filter linear waren, nun hier gelten. So weit kann dies sehr viel Aufsehen über nicht viel sein. Was ist diese ganze Zeile der Untersuchung gut für gut beantworten diese Frage in Stufen, beginnend mit einem Beispiel. Es ist keine große Überraschung, dass wir eine abgetastete exponentielle durch rekursive Multiplikation berechnen können. Lets Blick auf einen rekursiven Filter, der etwas weniger offensichtlich macht. Dieses Mal macht es einen Filter zweiter Ordnung, so dass der Aufruf zum Filtern von der Form sein wird. Setzt den zweiten Ausgangskoeffizienten a2 auf -2cos (2pi40) und den dritten Ausgangskoeffizienten a3 auf 1 und schaut auf den Impuls Antwort. Nicht sehr nützlich als Filter, eigentlich, aber es erzeugt eine abgetastete Sinuswelle (aus einem Impuls) mit drei Multiplikations-Adds pro Probe Um zu verstehen, wie und warum es das tut und wie rekursive Filter entworfen und analysiert werden können Der allgemeinere Fall, müssen wir zurücktreten und einen Blick auf einige andere Eigenschaften von komplexen Zahlen, auf dem Weg zum Verständnis der Z-Transformation. Das folgende ist ein hart codiert 3-Punkt gewichtet symmetrischen gleitenden Durchschnitt Filter: Also meine Annahmen für Wie ein n-Punkt gewichteter symmetrischer gleitender Durchschnittsfilter funktionieren würde wie folgt: Mein letztes Ziel ist es, einen gewichteten symmetrischen gleitenden Durchschnittsfilter zu erstellen, der eine modulare Anzahl von Punkten hat, über die er durchschnittlich sein kann. Der Teil, der mich wirklich bekommt, ist die Gewichtung selbst, und während ich sicher bin, dass eine verschachtelte Schleife irgendwelcher Art den Trick machen würde, kann ich nicht sehen, wie ich sogar so etwas anfangen würde. Vielen Dank für die Zeit nehmen, um meine Frage zu überprüfen, würde jedes Feedback sehr geschätzt werden. Wähle dein Land

No comments:

Post a Comment