Minimum-phase FIR spectral factor
You can find the maximum-phase spectral factor,
g, by reversing
h such that g = fliplr(h), and
b = conv(h, g).
Design Constrained Least Squares Filter
Design a constrained least squares filter with a nonnegative zero-phase response, and then use the
firminphase function to compute the minimum-phase spectral factor.
f = [0 0.4 0.8 1]; a = [0 1 0]; up = [0.02 1.02 0.01]; lo = [0 0.98 0]; % The zeros ensure nonnegative zero-phase resp. n = 32; b = fircls(n,f,a,up,lo); h = firminphase(b)
h = 1×17 0.2397 -0.1556 -0.2834 0.3866 0.0415 -0.2529 0.0584 -0.0028 0.0868 0.0079 -0.0978 0.0309 0.0095 0.0669 0.0171 -0.0111 -0.0019
b — Lowpass FIR filter coefficients
Lowpass FIR filter coefficients, specified as a row vector. Elements of
b must be real, of even order, and have nonnegative
nz — Number of zeros
Number of zeros of
b that lie on the unit circle,
specified as a positive integer. You must specify
an even number to compute the minimum-phase spectral factor because every
root on the unit circle must have even multiplicity. Including
nz can help the
function calculate the required FIR spectral factor. Zeros with multiplicity
greater than two on the unit circle cause problems in the spectral factor
 Mitra, Sanjit Kumar, and James F. Kaiser, eds. Handbook for Digital Signal Processing. New York: Wiley, 1993.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
All inputs must be constant. Expressions or variables are allowed if their values do not change.