# Hybrid Filter Banks with Fractional Delays: Minimax Design and Applications to Multichannel Sampling

### Ha Nguyen (view profile)

Implementation and demo of a hybrid FB with fractional delays

designFIR(phi, D, m0, h, M, n)
```function [num, den, gamma] = designFIR(phi, D, m0, h, M, n)

% designFIR: design filters F_i(z) (as in Section IV.B.)
%
% Usage:    [num, den, gamma] = designFIR(phi, D, m0, h, M, n)
%
% INPUTS:
%   phi: input rational transfer functions
%   D:   vector of fractional delays
%   m0:  system delay tolerance
%   h:   fast sampling interval
%   M:   superresolution factor (integer)
%   n:   nM will be the maximum length of designed FIR filters
%
% OUTPUTS:
%   gamma:  the H infinity norm of the induced error system K
%   num: numerator vectors
%   den: denominator vectors
%
% filter F_i(z) will be an IIR filter with num{i} is the coefficients of
% the numerator and den{i} is the coefficients of the denominator.
%

% Get the integer and residualof the delays
m = floor(D(:)/h);
d = D(:) - m * h;

% Get the digital system as in Prop. 2
Bd = getBd(phi, h, d);
Cd = getCd(phi, h, d);
Dd = zeros(size(Cd,1), size(Bd,2));

% The Integer Delay Operator
sysd = IntDelayOp([m0; m]);

% Get the digital system as in Prop. 3 by taking into account the integer
% delay operators
sys = sminreal( sysd * ss(Ad, Bd, Cd, Dd, -1) );    % sminreal to reduce the system's dimension on the fly
% sys = sysd * ss(Ad, Bd, Cd, Dd, -1);

% design of the system F
[Af, Bf, Cf, Df, gamma] = lmi_opt(sys, M, n);

% Convert to the coefficients
[num, den] = getF(Af, Bf, Cf, Df, M);
```