3

if we have a FIR with 100 coefficients, is there a method to "compress" the length? so for example, have a similar response with 50 coefficients? I am ok with the response degrading within some spec

  • Depends on complexity of the response. You can test how changing length effects in everything with tools you design your FIR filters. – Juha P Nov 17 '23 at 20:24
  • Your question is vague. Please edit your question to clarify. Do you want to store it in less space in ROM? Do you want to use fewer taps? Do you have a firm requirement on the frequency response? Do you know how and why the 100-tap filter was arrived at in the first place? – TimWescott Nov 17 '23 at 20:38
  • Relevant: https://dsp.stackexchange.com/questions/31066/how-many-taps-does-an-fir-filter-need – MBaz Nov 17 '23 at 22:40
  • 2
    This really just boils down to the optimal FIR design problem. You got specs? You can allow error from the target response up to some given spec? Then, with MATLAB, there is firpm() or firls() or kaiser(). And there are formulae for how many taps you can expect to have to accomplish the specification. – robert bristow-johnson Nov 18 '23 at 05:14

1 Answers1

1

You could convert your filter to FIR minimum-phase, using the causal cepstrum method, and then truncate from the end.

Minimum-phase filters have the energy of their impulse moved as early as possible, so the truncated bit should have less energy.

cloudfeet
  • 301
  • 1
  • 11
  • I'd personally try zero-padding your input impulse to 200 or 400 samples (or some nicer power of two) before doing the causal-cepstrum stuff, so it matches the original input at more points – cloudfeet Nov 17 '23 at 21:17