19

First of all the definitions are different: Phase delay: (the negative of) Phase divided by frequency Group delay: (the negative of) First derivative of phase vs frequency In words that means: Phase delay: Phase angle at this point in frequency Group delay: Rate of change of the phase around this point in frequency. When to use one or the other really ...


16

They don't both measure how much a sinusoid is delayed. Phase delay measures exactly that. Group delay is a little more complicated. Picture a short sine wave with an amplitude envelope applied to it so that it fades in and fades out, say, a gaussian multiplied by a sinusoid. This envelope has a shape to it, and in particular, it has a peak that represents ...


9

For those who still cannot chalk the difference here is an simple example Take long transmission line with simple sine signal with an amplitude envelope, $v(t)$, at its input $$v(t) \cdot \sin(\omega t)$$ If you measure this signal at the transmission line end, it might come somewhere like this: $$ v(t-\tau_g) \cdot \sin(\omega t + \phi)\\ = v(t-\tau_g)...


8

The book's formula is right. Let $$H(w) = 1 - r e^{j(\theta - w)} = [1-r \cos(\theta - w)] + j [-r \sin(\theta - w)]$$ Since the group delay $\tau$ is the negative of the derivative of the phase of $H(w)$, we first define the phase as: $$\phi(w) = \tan^{-1}\left( \frac{-r \sin(\theta - w)}{1-r \cos(\theta - w)} \right)$$ Using the derivative rule for the ...


6

The group delay of a filter is defined as minus the change in the phase response with respect to frequency. If the phase response of a filter is $\Phi(\omega)$, the corresponding group delay $\tau_g$ is given by: \begin{equation} \tau_g = -\frac{d\Phi(\omega)}{d\omega} \end{equation} In Matlab code, the group delay of a 4th order Butterworth filter can be ...


6

This is a slightly tedious but nevertheless straightforward exercise in computing the derivative of a function: $$\begin{align}\tau(\omega)&=-\frac{d\phi(\omega)}{d\omega}=-\frac{d}{d\omega}\arctan(f(\omega))\tag{1}\end{align}$$ with $$f(\omega)=\frac{r\sin(\omega-\theta)}{1-r\cos(\omega-\theta)}\tag{2}$$ From $(1)$ we have $$\tau(\omega)=-\frac{f'(\...


5

Note that a constant group delay is not sufficient for a band-limited signal to exhibit no dispersion. It is the phase delay that needs to be constant. If the phase is affine, i.e., if we have $$\phi(\omega)=a+b\omega,\qquad \omega>0\tag{1}$$ the group delay is constant $$\tau_g(\omega)=-\frac{d\phi(\omega)}{d\omega}=-b\tag{2}$$ but the phase delay is ...


5

I only need the total group delay, not spectrum of group delay. Group delay is a spectrum, so this doesn't make sense. The group delay is the derivative of the phase response of the filter, so in Python it can be calculated as from scipy import signal from numpy import pi, diff, unwrap, angle w, h = signal.freqs(b, a) group_delay = -diff(unwrap(angle(h))...


5

If you are looking for a frequency-independent delay applied to any given input signal by the filter (apart from amplifying and attenuating certain frequency components), then you won't be able to find it because there is no such delay. As you can see in your plots, group delay and phase delay are generally frequency dependent. Furthermore, for general input ...


4

As pointed out by Peter K., it is true that many well-known techniques for designing FIR filters actually only design linear phase filters. However, FIR filters are very well suited for delay equalization, simply because the design process is much simpler than for IIR filters. The reason for this is the fact that the design problem can be formulated in such ...


4

For the Karplus-Strong algorithm, your primary concern is for phase delay, $$ \tau_\phi(\omega) \ = \ - \frac{\phi(\omega)}{\omega} $$ rather than group delay. $$ \tau_g(\omega) \ = \ - \frac{d \phi(\omega)}{d \omega} $$ where $$ \phi(\omega) \ \triangleq \ \arg \left\{ H(e^{j \omega}) \right\} $$ and $H(z)$ is the transfer function of your filter, and $$ ...


4

There are a couple of interesting aspects of "reconstruction to unity". First, there are two ways of combining two filters: parallel and in series. For a parallel topology it is ALWAYS possible to find a complimentary filter so that the pairs add to unity. It's easy enough, actually. Simply do $\tilde{H}(\omega) = 1-H(\omega)$. In the time domain that means ...


4

This is actually pretty simple. Take a pure-tone sine wave, say $$s(t) = \cos\left(\omega t + \phi \right).$$ Now, fix a time $t_0$ and find the phase $\psi(t_0)$ of $s(t_0)$. We get $$\psi(t_0) = \omega t_0 + \phi$$ Now let's vary the frequency $\omega$ and keep the time fixed. The above expression becomes a linear function in $\omega$! Even though we ...


4

The problem is that the stft function is splitting the signal up into different windows. That means that the signal from time $n$ to $n+N_{w}-1$ is multiplied by $$ n, n+1, n+2, \ldots, n+N_w-1$$ instead of $$ 0, 1, 2, \ldots, N_w-1 $$ which is causing the scaling problem. If I apply the group delay calculation from this derivation, I get: where the top ...


3

Your integrator is a perfect accumulator, which is an unstable (marginally stable) system with a pole at $z=1$: $$H(z)=\frac{1}{1-z^{-1}}\tag{1}$$ This means that the value of the frequency response at $\omega=0$ (corresponding to the pole at $z=1$) is undefined. Consequently, the value of the group delay at $\omega=0$ is also undefined. Note that you can ...


3

I agree with Maximilian Matthé's answer, but I'd like to show you another route to the solution, which might be a bit more straightforward, and which avoids the explicit application of the Hilbert transform. First of all, note that the inverse Fourier transform of the real part of the frequency response corresponds to the even part of the impulse response: ...


3

You have two kinds information in the question: The system is causal The real part of the Frequency response is given. Now, (repeating the steps from Wikipedia Entry on Causal Filter) $h(t)$ is causal, i.e. $h(t)=0, t<0$. Let $g(t)=\frac{1}{2} (h(t)+h^*(-t))$ which is non-causal, but has hermitian symmetry, hence its Fourier Transform is real. We ...


3

Any kind of digital filter will cause the the output signal to be delayed by some amount of samples. From what I gather, you are trying to run a signal through a high pass filter (is it an FIR or IIR?) and correct the group delay by "filtering the first time, inverting the response in time...". I personally have never been taught or have read of such an ...


3

The phase delay of any filter is the amount of time delay each frequency component suffers in going through the filters (If a signal consists of several frequencies.) The group delay is the average time delay of the composite signal suffered at each component of frequency.


3

As I mentioned in my comment, you're right that the unit of group delay of a discrete-time system is samples. And $\Omega$ is indeed the normalized frequency in radians. The problem is that your final formula for the group delay of a first-order allpass filter is wrong (I didn't check the original formula). If you have an allpass system $$H(z)=\frac{a+z^{-...


3

Using the logarithmic derivative of the transfer function, as detailed in Julius O. Smith's Numerical Computation of Group Delay, the following computations seem to involve a little less of derivatives (and less risks of mistakes), which could be useful for more complicated frequency responses and related group delays (like rational fractions). And you can (...


3

Lets put forward the intuition behind the concept of the group delay before further discussing how to find the delay of FIR filters. Consider an input signal $x[n]$ of length $L_x$ which is nonzero between $n=0$ and $n=L_x-1$. And let a simplistic filter impulse response to be $h[n] = \delta[n-d]$. The output is immediately shown to be $y[n] = x[n-d]$ which ...


2

If the low pass filter has a linear phase response, then the group delay it introduces is indeed constant, and it equals $\tau_g=(N-1)/2$ samples, with $N$ being the number of taps. If $N$ is odd, then the group delay is an integer number of samples, and in this case you just have to shift the output signal $\tau_g$ samples to the left as compared to the ...


2

i'm gonna work on this using the EE DSP notation i think is most conventional in the EE DSP field. your exponentially-decaying 1-pole filter has this simple difference equation: $$ y[n] = (1-p) \, x[n] \ + \ p \, y[n-1] $$ turns out (as we shall see below) that $p$ is the pole. applying the Z transform gets you $$ Y(z) = (1-p) \, X(z) \ + \ p \, z^{-1}Y(...


2

If the magnitude spectrum is symmetric $$M(\omega)=M(-\omega)\tag{1}$$ (as I assume), then your system is real-valued. The phase response of a real-valued system is asymmetric: $$\phi(\omega)=-\phi(-\omega)\quad(\mod 2\pi)\tag{2}$$ This means that there can be two cases: The phase goes through zero at $\omega=0$, i.e. the phase is given by $\phi(\omega)=...


2

Most FIR filters are linear phase as their coefficients are (anti-)symmetric. So, most FIR filter design techniques are targeted at linear phase designs. That means FIR filters are not much good at equalizing group delay -- linear phase FIR filters all have constant group delay. IIR filters, on the other hand, generally have non-linear phase. That means ...


2

You got the shift a bit wrong – a shift in time domain (which you want) is a multiplication with a sinusoid in frequency domain. This is simply a consequence of the convolution theorem: you want to convolve with a dirac $\delta(t-\Delta t)$ in time, so you need to multiply with the dirac's Fourier Transform in frequency domain. Thus, what you'd need is ...


2

Consider an $D$-tap FIR filter with liner phase, the group delay (measured in samples) is $$g=\frac{D-1}{2}\tag{1}$$ and therefore, if it is measured in seconds it will be $$g=T_s\frac{D-1}{2}\tag{2}$$ where $T_s=1/F_s$. The CIC filter which is also denoted as recursive running sum filter is indeed a special implementation of a moving-average filter. The ...


2

Since nobody has answered my question yet. I will try to partially answer it myself. However, even though I accept it as the final answer I can revoke this if another user elaborates a much better answer, which I think is possible. After studying the proposal given by the above mentioned article about how to obtain a piece-wise positive group delay in a ...


2

No. There is no way you can compensate for a broad-band group delay without violating causality. If you add zeros at the end of your signal, the group delay stays constant and if you add zeros in front of it, the group delay goes up. At some frequencies it may look that there is no group delay (or phase shift), but that's just an illusion: the phase of ...


Only top voted, non community-wiki answers of a minimum length are eligible