比较过滤后的数据:matlab 带通函数与过滤函数

comparing filtered data: matlab bandpass function vs filter function

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

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 函数有什么帮助吗?或者我在分析中做错了什么?

您好:) 如果您输入edit signal.internal.filteringfcns.filterData,您甚至可以查看filterData 函数中的内容。您将看到此函数(取决于选项 opts)将

  • N/2 零填充信号并调用 filter
  • 用信号
  • 呼叫filtfilt

这在bandpass的文档中也有描述。所以可能这个零填充解释了为什么 filter(opts.FilterObject,x) 的输出不同。

你在Matlab的文档中找不到这个函数的描述,因为它是信号处理工具箱内部函数的一部分。