【问题标题】:How to implement elliptic filter in matlab?如何在matlab中实现椭圆滤波器?
【发布时间】:2014-05-06 10:34:48
【问题描述】:

How to implement elliptic filters in matlab that passes 8Hz to 35Hz?

我试过了!!但我对答案不满意

我有一个以 100Hz 采样的信号,表示为矩阵。我需要过滤信号以允许频率为 8-35Hz。 返回值也需要以矩阵表示!!

【问题讨论】:

  • 您能否详细说明您不满意的地方?另外,您的矩阵表示形式是什么(我假设要独立处理信号的列或行)?
  • 矩阵的格式为 26455*118,其中 26455 是行数,表示试验 118 是通道数。

标签: matlab filtering signal-processing


【解决方案1】:

您可以从滤波器设计工具(根据链接的答案)或使用ellip 获取滤波器系数。例如,一个 6th 阶椭圆滤波器的系数在 8-35Hz 通带中具有 0.5dB 波纹,在 100Hz 工作时阻带衰减为 40dB,其系数由下式给出:

Rp    = 0.5;  % 0.5dB ripples in the passband
Rs    = 40;   % 40dB attenuation in the stopband
fs    = 100;  % 100Hz sampling rate
fmax  = fs/2; % Nyquist frequency
[b,a] = ellip(6, Rp, Rs, [8/fmax, 35/fmax]);

那么,来自Matlab documentation

如果 X 是一个矩阵,filter 对 X 的列进行操作。

因此,给定输入 X 表示为矩阵,其中列将被独立过滤(独立通道),您可以使用:

y = filter(b,a,X);

获取过滤后的信号y,表示为矩阵(与X 大小相同)。换句话说,y(:,i) 将是与输入序列x(:,i) 对应的过滤输出。

注意filter也可以对X的行进行操作,使用语法:

dim = 2; % the dimension to filter along
y = filter(b,a,X,[],dim);

【讨论】:

    猜你喜欢
    • 2014-06-18
    • 2016-11-12
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多