通过Octave创建低通滤波器

时间:2013-11-22 09:47:42

标签: fft octave lowpass-filter

虽然我有一个用Octave编码的低通滤波器的例子,但我确信它有效,我无法理解。 剂量如何起作用?我怎么知道这个过滤器的截止频率?

original_data是我用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);

如果您有任何想法,请帮助我。

2 个答案:

答案 0 :(得分:2)

我同意评论,有很多功能可以让你正确设计一个低通滤波器(参见http://octave.sourceforge.net/signal/overview.html,特别是IIR和FIR滤波器设计部分)。设计过滤器后,您可以使用filterfiltfilt函数来应用过滤器。

举个例子,一个简单的方法是:

[b,a] = butter(n, Wc) % low pass Butterworth filter with cutoff pi*Wc radians - choose the order of the filter n and cut-off frequency Wc to suit
filtered_data = filter(b,a,original_data);

答案 1 :(得分:0)

首先重要的是要知道在频域工作不是过滤信号的最佳方法,时域方法可以很好地工作!

你想知道截止频率吗?您需要知道采样率和FFT的长度,以计算FFT的对应仓的频率。

采样率= FS,首先需要计算奈奎斯特。

Nyquist = FS / 2;

现在找到频率分辨率,在这种情况下,你的fft大小与你的original_data相同。

Resolution=Nyquist / (length(original_data) / 2);

好的,你在FFT的前八(8)个区域放置值0,那么现在你需要找到对应的bin的频率!

round(1 * Resolution)
round(2 * Resolution)
round(3 * Resolution)
.
.
round(8 * Resolution)

结果是截止频率,这意味着你将切割第一个和第八个箱子之间的频率