Я пытаюсь понять, как функция полосы пропускания выполняет фильтрацию, и натыкаюсь на эту строку (после создания фильтра).
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
или я делаю что-то не так в своем анализе?
bandpass.m
, так как это защищенный авторским правом код из The MathWorks. - person rinkert   schedule 15.11.2019