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.