Lattice and lattice-ladder filter implementation
[f,g] = latcfilt(k,x)
[f,g] = latcfilt(k,v,x)
[f,g] = latcfilt(k,1,x)
[f,g,zf] = latcfilt(...,'ic',zi)
[f,g,zf] = latcfilt(...,dim)
All-pole IIR filters
Allpass IIR filters
General IIR filters
[f,g] = latcfilt(k,x) filters x with the FIR lattice coefficients in the vector k. The forward lattice filter result is f and g is the backward filter result. If , f corresponds to the minimum-phase output, and g corresponds to the maximum-phase output.
If k and x are vectors, the result is a (signal) vector. Matrix arguments are permitted under the following rules:
If x is a matrix and k is a vector, each column of x is processed through the lattice filter specified by k.
If x is a vector and k is a matrix, each column of k is used to filter x, and a signal matrix is returned.
If x and k are both matrices with the same number of columns, then the ith column of k is used to filter the ith column of x. A signal matrix is returned.
[f,g,zf] = latcfilt(...,'ic',zi) accepts a length-k vector zi specifying the initial condition of the lattice states. Output zf is a length-k vector specifying the final condition of the lattice states.
[f,g,zf] = latcfilt(...,dim) filters x along the dimension dim. To specify a dim value, the FIR lattice coefficients k must be a vector and you must specify all previous input parameters in order. Use the empty vector [ ] for any parameters you do not want to specify. zf returns the final conditions in columns, regardless of the shape of x.
Filter data with an FIR lattice filter:
%create data x=randn(512,1); %reflection coefficients for 3-point MA filter [f,g]=latcfilt([1/2 1],x); %compare f vector to dfilt.latticemamin output Hd=dfilt.latticemamin([1/2 1]); y=filter(Hd,x); isequal(y,f) %returns 1 %compare g vector to dfilt.latticemamax output Hd1=dfilt.latticemamax([1/2 1]); y1=filter(Hd1,x); isequal(g,y1) %returns 1