在Matlab中用于带通butterworth滤波器的截止频率?

时间:2015-02-18 16:52:28

标签: matlab signal-processing

我尝试将两个不同频率的正弦波相加,然后再使用一个butterworth滤波器将它们分开。我无法弄清楚要设置高低截止值的方法。这是我一直在玩的代码。

x = 0:.1:40*pi;

% Plot sine wave
subplot(3,1,1)
plot(x, sin(x));
ylim([-2 2])

wave = sin(x) + 2*cos(x/3);

% Plot mixed wave
subplot(3,1,2)
plot(x, wave);

[c d] = butter(5, [.02 .05]);
y2 = filtfilt(c, d, wave);

% Plot recovered wave
subplot(3,1,3)
plot(x, y2);

如果我只想获得正常的正弦波,那么频率不会是0.1 /(2 * pi)或~0.016?手动尝试截止值后,我发现0.02和0.05给了我想要的东西。但0.016超出了该范围。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的采样频率似乎为10Hz(x = 0:.1:40*pi;,因此dt0.1s)。因此0.02截止对应于0.02*2*pi*10 = 1.25 rad/s0.2 Hz