Erstellen Low-Pass-Filter von Octave
Obwohl ich hatte ein Beispiel des low-pass-filter, codiert in die Oktave, und ich bin mir sicher, dass es funktioniert, kann ich nicht verstehen.
Wie Dosis dieser Arbeit? und Wie kann ich wissen, cut-off-Frequenz des filters?
Den original_data ist eine Spalte von Daten zur Wasserqualität, die ich mit 1Hz.
l = rows(original_data);
a = fft(original_data);
for i = (1:l);
if i >9
a(i) = 0;
endif
endfor
b = fft(original_data);
for i = (1:l)
if i > 1
b(i) = 0;
endif
endfor
c = real(ifft(a));
c(1);
d = real(ifft(a))*2-c(1);
Wenn Sie eine Idee haben, bitte helfen Sie mir.
- Dies ist eine wirklich schlechte Art und Weise zu tun-Filterung - es ist eine Mauer in der Frequenz-Domäne, das bedeutet, es wird starke ringing-Artefakte im Zeitbereich. Verwenden Sie eine Fenster-Funktion im Frequenzbereich um dies zu vermeiden.
- Vielen Dank, Paul. Wissen Sie, wie Sie wissen, cut-off-Frequenz des filters?
- Der cut-off-Frequenz hängt von der Größe der fft, die, wie es scheint
l
, so wäre es caFs * 10 / l
, und Sie sagen, dassFs = 1 Hz
, also wären das ca10 / l
Hz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stimme mit dem Kommentar, es gibt viele Funktionen, um Ihnen zu erlauben, das design eines low-pass-filter korrekt ein (siehe http://octave.sourceforge.net/signal/overview.html, insbesondere die IIR-und FIR-filter-design-Abschnitte). Sobald Sie entwickelt haben, Ihre filter, die Sie anwenden können, es mit der Funktion
filter
oderfiltfilt
.Als ein Beispiel, eine einfache Möglichkeit, darüber zu gehen, wäre dies:
Erstens ist es wichtig wissen, das funktioniert in der Frequenz-Domäne ist nicht die beste Möglichkeit zum filtern eines Signals, time domain Methoden können gut funktionieren !
Wollen Sie wissen, die cut-off-Frequenz? Sie müssen wissen, die Samplerate und die Länge der FFT auf die Berechnung der Häufigkeit der Korrespondent bin deiner FFT.
Samplerate = FS, erste tun, die Sie benötigen, berechnen Sie die Nyquist.
Suchen Sie nun die Frequenz-Auflösung, in diesem Fall die fft-Größe ist die gleiche von Ihr original_data.
OK fast ther, stellen Sie den Wert 0 in den ersten acht(8) Behälter von Ihrem FFT, dann jetzt müssen Sie finden, die Häufigkeit der Korrespondent bin!
Sind die Ergebnisse der cut-off-Frequenz, das bedeutet, dass Sie schneiden die Frequenzen zwischen der ersten und achten bin