Minimum-phase FIR spectral factor
h = firminphase(b)
h = firminphase(b,nz)
h = firminphase(b,nz) specifies the number of zeros, nz, of b that lie on the unit circle. You must specify nz as 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 firminphase calculate the required FIR spectral factor. Zeros with multiplicity greater than two on the unit circle cause problems in the spectral factor determination.
This example designs a constrained least squares filter with a nonnegative zero-phase response, and then uses firminphase 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 insure nonnegative zero-phase resp. n = 32; b = fircls(n,f,a,up,lo); h = firminphase(b);