New answers tagged

4

You have already read those Oppenheim's Signals & Systems, and Discrete-Time Signal Processing books. I'm not sure what you mean by foundations but in some sense these two are also the foundations on signal processing. In other words, there are no (popular & successful) graduate level DSP books that discuss at an advanced level the same topics that ...


2

I found these books to be very good in their respective field: J.R. Ohm - Multimedia Communication Technology This has focus on representation and transmission of signals. It follows a practical approach hands down and features very good, informative illustrations. In general, Ohm's books are recommendable. His newest one is about feature extraction, but I ...


2

My late night brain made foolish mistakes, for the record, if anyone needs this, the working code is as follows: Header: float state1; float state2; float state3; Implementation: In Constructor: state1 = 0; state2 = 0; state3 = 0; Robert's function: // this processes one sample float first_order_filter(float input, float pole, float zero, float *state) { ...


1

// this processes one sample float first_order_filter(float input, float pole, float zero, float *state) { float new_state = input + pole*(*state); float output = new_state - zero*(*state); *state = new_state; return output; }


0

here is my quarter-century old MATLAB code for a pinking filter: % % pinking filter analysis program % % from robert bristow-johnson % % please give to your local right-wing fringe group % z = [0.98443604; 0.83392334; 0.07568359]; % the zeros as shown in http://www.firstpr.com.au/dsp/pink-noise/ p = [0.99572754; 0.94790649; 0.53567505]; % the poles % ...


1

You need to invert the filter, i.e. flip the poles and zeros. The implementation that you reference is fairly awkward and will require a decent amount of math work to invert: you need to write the Z-transform for each first order section, add all the fractions into a single fraction and calculate the zeros of numerator polynomial. An easier way would be to ...


2

Is it possible to design linear-phase filters that sum to a flat frequency response? Yes, of course. If so is it practical to use them in real-time audio processing for as many as 10 bands? That depends on your definition of practical. The problem at audio is that FIR filters at low frequencies get really long. It depends on the lowest frequency, desired ...


1

Well, by definition of linear phase filter follows that $A(f)$ of the filter response $H(f) = A(f)e^{-j2\pi \frac{N}{2} fT}$ is a linear combination of cosines of different frequencies therefore is quite impossible to obtain a flat band (basically you need infinite coefficients of the impulse response). But you can always approximate it quite well because ...


0

I'll here give another reason (perhaps the most important one) why implementing filters by manually changing frequency bins is usually a bad idea. Note first that time domain convolution (simple FIR filter design) can also be implemented in the frequency domain and this procedure is known as FFT convolution ( despite its name the math operation here is ...


0

What you want is basically a delay $$x(t-\tau) \Rightarrow e^{-j\omega \tau}$$ If you can live with $k$ being quantized you can simply use a single tap delay FIR filter. If you need more granularity you need to implement a fractional dealy. I would cascade a shot fractional FIR filter with a long single tab bulk delay filter. If $k$ is positive the filter ...


1

You can have all the taps be zero except for the last tap and the filter will delay the signal by that number of taps (as an all-pass). This doesn't do any filtering, and it is the actual filtering requirement that would drive the number of taps needed in the filter. For that requirement alone a dual port memory is a good solution for very long delays. The ...


2

This depends a lot on whether your constraints on the number of taps is computation or memory. If you have a enough memory, you can simply use an FIR with all taps zero except for the last one (Which is $1$). That's equivalent to using a ring buffer and no filter at all. If you don't have enough memeory, things are more tricky. YOu can get delays that are ...


1

As far as I know and I have experienced, filtering in Fourier space has the advantages of modifying the frequencies directly on the frequency domain. Let's say that you have a frequency component at 50 Hz and you can manually remove then even better than a Butterworth filter. That being said, you might modify the phase response of your filter introducing ...


4

We actually do implement long FIR filters doing that. If it's running real-time or on an input that is indefinitely long, then the method for doing that is called "fast convolution". Remember that the "Fourier Transform" that you are multiplying is the Discrete Fourier Transform and that has issues regarding circularity in the resulting ...


0

If you are post processing you can instead use a "zero-phase" filter which passes the signal through the filter twice in the forward and reverse direction, resulting in an output that is completely aligned with the input as would be expected with a filter with no delay, and with a significant reduction in start-up deviations (this is a non-causal ...


Top 50 recent answers are included