He's talking about a different thing: output phase (over all the different frequencies). Only the feedback paths will have effect on the system poles, so your resonant frequencies and their Qs will stay the same whatever you do with (non-feedback) inputs and outputs (note that in general you can add multiple inputs to a filter just like you can add multiple outputs).neotec wrote:The phase is correct. If it wouldn't be, the resonance peaks wouldn't occur perfectly at 'fc' (for all 'fc'). I've plotted the 4th order ladder filter, -180° at fc, -90° at fc*0.4 ... works as expected (compared to a bode plot of a 'perfect' 4th order lowpass filter).aciddose wrote:of course, that should bother anyone. that's because the output phase isn't correct using this method.
Now depending on what inputs you feed to various nodes, and what outputs you take from other nodes you get different zeroes. The zeroes are what's different between a low/high/band pass or notch or peaking or shelving or whatever else for that matter.
Now, if we take the input and subtract a low-pass filtered version of the same, we only get proper high-pass in the first-order low-pass case. With 2nd (and higher) order filters the low-pass filter will cause more phase shift, so the substraction no longer makes sense (not in time domain anyway). It is simple to see this in terms of transfer functions:
Code: Select all
input - lowpass for second order
1 s^2 + s/Q + 1 1
1 - ------------- = --------------- - --------------
s^2 + s/Q + 1 s^2 + s/Q + 1 s^2 + s/Q + 1
s^2 + s/Q
= -------------
s^2 + s/Q + 1
Since highpass has a transfer function
s^2
---------------
s^2 + s/Q + 1
For higher orders stuff just gets worse.
There are really only two proper ways. One way is to a low-pass and swap all the one-pole lowpass sections with one-pole high-pass sections (and make sure you get the signs right). That should mirror the frequencies (eg low frequencies become high and high become low in the transfer function).
The other way is to actually figure out what the transfer function zeros at various nodes are (the poles are the same everywhere) and then form a weighted combination of outputs from said nodes to get whatever zeroes you really want. Since the zeroes depend on your input point, you can alternatively figure out what zeroes you will get at your chosen output for various input nodes, and form the zeroes as weighted combination of those.
Just remember that you MUST do all the calculations on the transfer functions (rather than weights or coefficients directly) because otherwise the phase-shift will make it won't work.
Note that in general there is no reason to believe that an arbitrary set of ouput (or input) nodes can realize an arbitrary set of responses without any singularities and the amount of math you need to do to figure out the right combinations depends pretty heavily on where you pick your outputs (or inputs).
You could try searching for "observer canonical" (for zeroes by combined outputs) and "controller canonical" (for zeroes by combined inputs) for some stuff that might (or might not) be helpful in figuring this out. Basically you should find the direct-form equivalents of analog filter design, but end up with other useful discussion about observability/controllability.