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