Main Content


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)


When filtering data, lattice coefficients can be used to represent

  • FIR filters

  • 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 |k|1, 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] = latcfilt(k,v,x) filters x with the IIR lattice coefficients k and ladder coefficients v. Both k and v must be vectors, while x can be a signal matrix.

[f,g] = latcfilt(k,1,x) filters x with the IIR lattice specified by k, where k and x can be vectors or matrices. f is the all-pole lattice filter result and g is the allpass filter result.

[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.


collapse all

Generate a signal with 512 samples of white Gaussian noise.

x = randn(512,1);

Filter the data with an FIR lattice filter. Specify the reflection coefficients so that the lattice filter is equivalent to a 3rd-order moving average filter.

[f,g] = latcfilt([1/2 1],x);

Plot the maximum- and minimum-phase outputs of the lattice filter in separate plots

title('Maximum-Phase Output')

title('Minimum-Phase Output')

Figure contains 2 axes objects. Axes object 1 with title Maximum-Phase Output contains an object of type line. Axes object 2 with title Minimum-Phase Output contains an object of type line.

See Also

| |

Introduced before R2006a