【问题标题】:Matlab 3 dB 12 hertz lowpass filter [closed]Matlab 3 dB 12 赫兹低通滤波器 [关闭]
【发布时间】:2013-06-20 08:43:56
【问题描述】:

我正在寻找截止频率为 12Hz 的 3dB 低通滤波器。我知道Matlab有这个功能fdesign.lowpass,它应该可以是F3dbsource/additional)的3dB,但我还不确定如何实现它们,即:我应该使用哪些功能包括哪些功能不包括在内。我对我认为不需要的所有其他变量感到困惑——我只需要 Fc 和 3dB。我还找到了fdatool,但也不知道如何设置这样的过滤器。

数据包含常规的 x 和 y 值,同时它将是记录运动的速度与时间图。

【问题讨论】:

  • 3dB应该代表什么?截止频率定义为滤波器衰减为 3dB 的频率,因此 3dB 要求不会添加额外信息。
  • 我真的不知道,我在某处读到过。您可以专门添加 F3db,默认值为 6dB (?),请参阅帮助 fdesign.lowpass。但假设没关系:我应该输入什么值/变量来过滤我的矩阵?
  • 要过滤矩阵,您应该知道两个维度的采样频率。实际上,关于 6dB 的信息可能是有意义的:1D 滤波器将具有 3dB 衰减的截止频率,当使用两个此类滤波器创建 2D 滤波器时,频率响应点(fco_1,fco_2)将具有 6dB 的衰减。要在该点获得 3dB 衰减,您必须取原始 2D 滤波器的平方根......但这对我来说太过分了,您应该尝试更多地研究问题。
  • 由于这个特殊数据,我不知道确切的采样频率——dt 在 0.01-¹ 和 0.02-¹ s 之间变化。说 Fs = 1 / average(dt) 是否安全
  • 是的,这应该是平均频率。这将对应于数字域中的 2*PI radHere 是创建一维滤镜的函数。

标签: matlab filtering lowpass-filter


【解决方案1】:

对于您的应用,我强烈建议您尝试使用普通的巴特沃斯过滤器,Matlab 语法是:

[b,a]=butter(n,Wn)

Wn 是数字频率,这就是我要摆出的姿势:

% assume x is time and y is speed
Ts = mean(diff(x));
Fs = 1/Ts;
% for butter, we need Wn, which is the cutoff frequency
% where 0.0 < Wn < 1.0, where 1.0 is half the sample rate
% The cutoff is the -3 dB point of the filter
% Wn = fCutOff/(Fs/2)
% for a cutoff of 12 Hz
fCutOff = 12/(Fs/2);
% we'll start with an order of 1 which should give us about 20 db/decade attenuation
[b,a] = butter(1,fCutoff);
% plot the filter frequency response to see what it looks like
% use 512 points to plot it
freqz(b,a,512,Fs)

但是,如果我理解正确,您以大约 66 Hz 的频率对数据进行采样,这比您想要的截止频率快大约 5 倍。经验法则通常是 10 次,因此您可能对得到的输出并不真正满意。这是我的输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-08
    • 2016-02-26
    • 2015-05-03
    • 2016-02-13
    • 1970-01-01
    • 2011-12-26
    • 2017-04-06
    • 2013-10-29
    相关资源
    最近更新 更多