在对我的信号应用低通贝塞尔滤波器的过程中,我意识到 besself 函数不支持数字贝塞尔滤波器的设计,而双线性函数可用于将模拟滤波器转换为数字形式,贝塞尔滤波器除外。Bessel 滤波器的数字等效物是 Thiran 滤波器。对于我的滤波器,我唯一知道的是它的带宽应该小于 5GHz(比如说 3GHz 带宽)。如果有人可以帮助我在 Matlab 中编写代码,我将不胜感激。我到目前为止的代码是:
%lowpass filter
sig = MY SIGNAL;
sig_length = 5000001; % my signal length
fs = 10000e9 % sampling rate
fc = 3e9; % cutt off frequency
order = 4;
wo = 2*pi*fc;
[z,p,k] = besself(order, wo,'low'); % zero, pole and gain form
% Convert to digital fileter
[zd,pd,kd] = bilinear(z,p,k,fs); % z-domain zero/pole/gain
[sos,g] = zp2sos(zd,pd,kd); % convert to second order section
filteredSignal = filtfilt(sos, g, sig);