Matlab 这是设计过滤器的正确方法吗?

Matlab 这是设计过滤器的正确方法吗?,matlab,filter,Matlab,Filter,我使用这样的过滤器,我不知道这是否是一个正确的方式。 如果最后一行中的filter函数被filter替换,则my out的边缘将有一些零。滤波器的输出是零相位吗? 根据它的输出,我认为是的,而filter函数的输出不是 function [grpdly,out] = myflt(fs,f2,f1,order,data) Fs = fs; % Sampling Frequency N = order; % Order Fc1 = 1/f1;% % First Cutoff F

我使用这样的过滤器,我不知道这是否是一个正确的方式。 如果最后一行中的filter函数被filter替换,则my out的边缘将有一些零。滤波器的输出是零相位吗? 根据它的输出,我认为是的,而filter函数的输出不是

function [grpdly,out] = myflt(fs,f2,f1,order,data)
Fs = fs;  % Sampling Frequency
N    = order;      % Order
Fc1  = 1/f1;%  % First Cutoff Frequency
Fc2  = 1/f2;     % Second Cutoff Frequency
flag = 'scale';  % Sampling Flag
% Create the window vector for the design algorithm.
win = hamming(N+1);
% Calculate the coefficients using the FIR1 function.
[b,a] = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
% Hd = dfilt.dffir(b);
out=filtfilt(b,a,data);
grpdly = grpdelay(b,a);


我这样使用它,out在两条边上没有填充零,gd是100。有什么问题吗?

你到底在问什么?从
help filt
filt零相位正向和反向数字IIR滤波。
是的,它是零相位。@Jørgen,但我使用了第一个函数get b&a,所以我的代码中有什么问题吗?使用
fir1
没有问题,这是一种非常正常的方式。如何使用
a
b
中的系数应用过滤器取决于您和您的要求。因此,可以使用
过滤器
过滤器
s=mysignal;
[gd,out] = myflt(1,30,60,100,s);