Hi,
I’m trying to implement hilbert filter with a narrow ripple and my limited
processing power.
TW = 35; % Transition Width 35 Hz
Apass = 0.02; % Passband Ripple (dB) -> variation 0.1%
Fs = 1024; % Sampling Frequency
h = fdesign.hilbert('TW,Ap', TW, Apass, Fs);
Hd = design(h, 'equiripple');
Hhilb
FilterStructure: 'Direct-Form FIR'
Arithmetic: 'double'
Numerator: [1x106 double]
PersistentMemory: false
It needs 106 tabs! Common, I don’t have such a processing power.
Let’s try IIR..
Hd = design(h, 'ellip');
Hd FilterStructure: Cascade
Stage(1): Parallel
Stage(1): Cascade Minimum-Multiplier Allpass
Stage(2): Cascade
Stage(1): Direct-Form FIR
Stage(2): Cascade
Stage(2): Scalar
PersistentMemory: false
Hd.Stage(1).Stage(1) FilterStructure: 'Cascade Minimum-Multiplier
Allpass'
AllpassCoefficients: Section1: [0 -0.227820626646375]
Section2: [0 -0.890379613912486]
PersistentMemory: false
Hd.Stage(1).Stage(2).Stage(1) FilterStructure: 'Direct-Form
FIR'
Arithmetic: 'double'
Numerator: [0 0+i*1]
PersistentMemory: false
Hd.Stage(1).Stage(2).Stage(2).Stage(1) FilterStructure:
'Scalar'
Arithmetic: 'double'
Gain: -1
PersistentMemory: false
Hd.Stage(1).Stage(2).Stage(2).Stage(2) FilterStructure: 'Cascade
Minimum-Multiplier Allpass'
AllpassCoefficients: Section1: [0 -0.61509297109775]
PersistentMemory: false
Hd.Stage(2) FilterStructure: 'Scalar'
Arithmetic: 'double'
Gain: 0.5
PersistentMemory: false
It seems very complex but the result is very good for me and Matlab reports it
needs only 5 multiplier per sample and 7 adder. I don’t know how I can
implement this filter in my MSP430 with C, and there is some complex
coefficients that I don’t know about at all. As a result, I’m in
doubt if It can be implemented easier than FIR. Can you draw a path me to
realize such as filter, what should I do?
Thanks.