LSF functions not working?

10 次查看(过去 30 天)
Carl
Carl 2017-10-19
test = rand(1,10000); % make random input 'signal'
a = lpc(test,128); % grab 128-order LP coeffs
w = filter(a,1,test); % extract residual
test_LPC = filter(1,a,w); % reconstruct using LP coeffs
temp = poly2lsf(a);
alsf = lsf2poly(temp);
test_LSF = filter(1,alsf,w);
When I run the code above I'm simply converting the LPC coefficients to line-spectral frequencies (LSF) and then back again to do a very simple LPC reconstruction of a random signal.
It doesn't work though. 'alsf' and 'a' shoudl be identical but they aren't and test_LSF and test_LPC should both reconstruct test but test_LSF explodes. Am I using these wrong because it looks like the two functions just don't work. Thanks for any help!
  1 个评论
Tony Mohan Varghese
Tony Mohan Varghese 2017-11-14
poly2lsf and lsf2poly involve deconvolution and convolution operations that will become numerically unstable for very large polynomial orders. The polynomial order used here is very large. It is not a good idea to try to convert the line spectral frequencies back to a polynomial here.

请先登录,再进行评论。

回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by