【问题标题】:comparing filtered data: matlab bandpass function vs filter function比较过滤后的数据:matlab 带通函数与滤波器函数
【发布时间】:2020-03-10 21:22:01
【问题描述】:

我试图分解带通函数如何进行过滤并在这条线上遇到困难(在创建过滤器之后)。

y = signal.internal.filteringfcns.filterData(x,opts);

x 是数据,opts 具有过滤器结构。 我一直在环顾四周,找不到任何关于 signal.internal.filteringfcns.filterData 函数的信息。我将该输出与filter(opts.FilterObject,x) 进行了比较,它们并不相同。

接下来是一个最小的工作示例 (data2.txt)。

load('data2.txt')

srate=64;
freqrange=[0.4 3.5];

var{1}=freqrange;
var{2}=srate;

m=numel(data2);
x=data2;
R=0.1;%10% of signal
Nr=50;
NR=min(round(m*R),Nr);%At most 50 points
x1=2*x(1)-flipud(x(2:NR+1));%maintain continuity in level and slope
x2=2*x(end)-flipud(x(end-NR:end-1));
x=[x1;x;x2];

opts=signal.internal.filteringfcns.parseAndValidateInputs(x,'bandpass',var);
opts = designFilter(opts);

xx = signal.internal.filteringfcns.filterData(x,opts);
x_fil=xx(NR+1:end-NR);

xx = filter(opts.FilterObject,x);
x_fil2=xx(NR+1:end-NR);

plot([data x_fil x_fil2])
legend('raw','filterData','filter')

剧情如下:

这是两个滤波信号的 psd 图(首先是 filtData)。

那么,对这个 ...filtData 函数有什么帮助,或者我在分析中做错了什么?

【问题讨论】:

标签: matlab filtering signal-processing bandpass-filter


【解决方案1】:

再次嗨 :) 如果您输入edit signal.internal.filteringfcns.filterData,您甚至可以查看filterData 函数内部的内容。你会看到这个函数(取决于选项opts)要么,

  • N/2 零填充信号并调用filter
  • 用信号拨打filtfilt

bandpass 的文档中也对此进行了描述。因此,这个零填充可能解释了为什么您的 filter(opts.FilterObject,x) 输出不同。

您在 Matlab 的文档中找不到此功能,因为它是信号处理工具箱内部功能的一部分。

【讨论】:

    猜你喜欢
    • 2014-02-26
    • 2016-07-30
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多