From: Mehmet Fide on 24 Jul 2010 07:02 Hi, I’m trying to implement Hilbert transformer 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 by using 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? Thanks.
|
Pages: 1 Prev: extraire une partie contouré Next: NEED MATLAB PROGRAMMER FOR BUILDING OPTIONS PORTFOLIO |