5

As your plot shows, the second form allows for the correlation peak to be negative. Now, what does a strong negative cross correlation mean? It means the signals are very similar, except one has a negative sign in front of it, i.e., $x_1 \approx -x_2$. Whether or not this makes sense depends a lot on the actual application. In the application you describe, ...


5

You are having trouble because that's not a Costas loop. A Costas loop uses demodulated data in some form to change the phase that's expected from the signal. You're just taking the I/Q demodulated signal and applying it to the atan2 function; that makes a sort of linearized extended phase detector, but without determining that the phase should have ...


5

If you calculate the error, 44102/44100 is only about 45 parts per million. That is well within operating tolerance of many crystal oscillators used in consumer equipment to generate audio sampling rates and USB communication clocks. You can be quite pleased it is not even more off. Another problem is that if you simultaneously use different devices for ...


5

It is just a convention, but it is useful in some cases. For example, the phase of the DFT of a real discrete-time signal is odd only if the angles are expressed in the range $[-\pi, \pi)$. Sometimes you just have to adapt to the convention used by your tools -- for example, MATLAB functions like angle and atan2 return angles in $[-\pi, \pi)$. Note that the ...


5

First, when you're talking angles, in DSP pretty much all angles are $\mod 2\pi$. So $2\pi \equiv 0$. Usually it's more convenient to keep angles on the interval $\left [-\pi, \pi \right )$, because we're usually most interested in angles around $0$. You don't have to do this, however -- if your problem at hand is easier to solve if your angle lies on $[-...


5

If you are confident that the relationship is a ratio of integers, then resampling would be a fine approach. One would be matched to the other by upsampling by 1008 and then downsampling by 996 which when reduced by their greatest common divisors becomes upsample by 84 and downsample by 83. To do this in scipy, use resample to interpolate to a length that is ...


3

Bottom line: Either implement a (simple) carrier recovery algorithm or use DBPSK instead of BPSK if you are ok with the 3 dB SNR penalty in performance. If you want to do synchronous detection of BPSK, you will need to completely remove the carrier offset. If you do not correct for carrier offset, then your BPSK symbols will continue to rotate, eventually ...


3

From the definition of the (magnitude-squared) coherence $$C_{xy}(f)=\frac{|G_{xy}(f)|^2}{G_{xx}(f)G_{yy}(f)}$$ with the cross-spectral density $G_{xy}(f)$, and the power spectra $G_{xx}(f)$ and $G_{yy}(f)$, respectively, it is clear that scaling of $x(t)$ or $y(t)$ does not change the value of $C_{xy}(f)$, because the scaling constants appear in the ...


3

A big advantage of Barker Codes over a generic marker is strong correlation when the codes are aligned and very low correlation for all other shifts, even by one sample. This offers increased resistance to bit errors that would otherwise cause a false detection. The presence of a Barker sequence can be optimally detected using correlation, which is the ...


3

There is an optimum loop BW that maximizes the SNR, and this applies to both Symbol Timing Recovery as you inquire about as well as Carrier Recovery. The specific answer depends on the characteristics of the noise source involved in your system, such as clock jitter and phase noise, and the modulation you are using; specifically how the signal energy is ...


3

Got me at that one! The "OFDM symbol acquisition" block is in fact not from gr-digital (where your other OFDM blocks come frome), but from gr-dtv, where it is used to capture DVB-T signals, if I remember correctly. It might be very DVB-specific! Let us have a look at the dvbt_rx_8k.grc example from gr-dtv (or, at least, the top half): So your understanding ...


3

I would suggest you to take a closer look on this publications: MATCH: A Music Alignment Tool Chest Live Tracking of Musical Performances Using on-line Time Warping Shortly speaking, algorithm is following:: Extract temporal features of your signals (Audio Spectral Flatness, MFCC's, Onset, etc.). Using Dynamic Time Warping with some constraints,...


3

Consider using a Gardner Timing Error Detector which in the following form is usable for higher order QAM: $$TED = I_n(I_{n+1}-I_{n-1}) + Q_n(Q_{n+1}-Q_{n-1})$$ Where $I_{n-1}$,$Q_{n-1}$, $I_{n}$, $Q_{n}$ and $I_{n+1}$, $Q_{n+1}$ are the early, prompt and late QAM samples at 2 samples per symbol. The TED will drive the prompt sample to zero error at the ...


2

well, it depends on how similar the audio signal from the two tracks are. i dunno if the two tracks are identical, to within some degree of error or noise, and to within some degree of time alignment, but somehow, in a manner that is salient to your model or to your problem, you have to have a measure of something in the two signals to align. so let $$ ...


2

There can be several ways to calculate the Phase locking value (PLV). For relatively mono-component and high SNR (well filtered)-Time domain signal can be converted into analytical signal using Hilbert transform to calculate the phase difference. For the right signal it is a very powerful technique as is shown in the tutorial you have referenced. Here is a ...


2

This is usually addressed via looking for a known pattern in the data frame. The modulation scheme is not mentioned but when synchronisation is required, a Phase Locked Loop (PLL) is most commonly employed. The PLL will track the received signal and tune a local oscillator to its frequency AND phase. When lock is achieved the signal that a local oscillator ...


2

The simplest solution I can think of is to use an envelope follower, the higher the amplitude, the more open the mouth is. This is pretty simple but will one give tell you how 'open' the mouth should be, not the shape. This should already be quite effective for a cartoon. To make it more realistic you should probably try to detect vowels (Oh and Ah for ...


2

Symbol timing synchronization seems to be a complex topic although once you get some basic principles right, it all makes simple sense. The method you have referred to is known as Digital Filter and Square Timing Recovery$\ ^{[1]}$, also referred to as Oerder and Meyr algorithm. EDIT: And later steps in your summary are not correct. There is no search, ...


2

It will work when you take the 2nd gradient of the signals: import numpy as np from scipy import signal s0 = np.gradient(np.gradient(s0)) s1 = np.gradient(np.gradient(s1)) np.argmax(signal.correlate(s0, s1)) -> 525358 That corresponds to a shift of 1071 which is close to your expected 1069 Interestingly the minimum (most negative correlation) is close ...


2

This can be accomplished by changing the carrier frequency using a Numerically Controlled Oscillator (NCO) which maintains an accurate and continuous phase versus time trajectory via the phase accumulator. This is markedly different than changing the frequency with a classical PLL where we would typically break and reacquire lock to change frequency ...


2

I can't find any way to make the carrier recovery, I don't think you can or should really talk "carrier recovery" in OFDM systems; after all, OFDM is a multi-carrier system. So, you'd need to recover some 2 to a couple thousand carriers, depending on the OFDM system's number of subcarriers. but also the phase Uh-oh. Have you considered what this means? ...


2

I can only answer your second question: "How can the loop bandwidth in GNU Radio synchronization be configured as a percentage of the symbol rate?" The tracking loop in the symbol synchronizer block operates at the symbol rate, estimating timing error and making a correction once per symbol. So the sample rate of the error signal from the TED is at ...


2

It looks like the filter you want is indeed $-ith(t)$. Here is some Octave code to get a visualization in the frequency domain: t = [-1:0.01:1]; h = 0.5*(1+cos(pi*t)); hd = -i*t*0.5.*(1+cos(pi*t)); H=fftshift(fft(h,512)); HD=fftshift(fft(hd,512)); v = [-256:255]; plot(v, 20*log10(abs(H/512)), v, 20*log10(abs(HD/512))) BTW, when plotting $h(t)$ in the time ...


2

It seems like your error jumps to -$\pi$ and then to $\pi$ I think you need to unwrap your phase. Let me explain with an example Say that the output of atan2 block is $\pi - 0.001$ and then the phase difference increases by 0.002 rad, the outuput of the atan 2 block should then be $\pi$ + 0.001, however the atan2 output is limited to ±$\pi$. Therefore the ...


2

One approach not yet mentioned is frequency multiplication by a factor of the number of phase positions used followed by a PLL for noise reduction and then a frequency divider by then same factor. The reason for this is when you multiply the frequency by N, you also multiply the phase by N. If the phase positions are selections of $2\pi/N$ (or those with ...


2

Yes this is very common to have a dynamic loop bandwidth such that during acquisition the loop bandwidth is wider, and then once acquired to tighten it up for better noise performance. A typical loop will have an error signal determined which is presented to the input of the loop filter. The filtered version of this error signal can be thresholded and used ...


2

The Symbol Synchronizer block is a PLL-based synchronizer that is trying to estimate the symbol clock period and symbol clock phase (aka timing offset) based on the samples coming in that represent the data symbols. Being a PLL configured with static parameters, there is a fundamental trade off between acquisition speed and tracking stability of the symbol ...


2

Yes indeed it will be (although we could argue that it may not be necessarily for all distances since the phase is cyclical!). In free space the signal propagates at the speed of light, therefore this sets the wavelength in distance based on the frequency transmitted according to: $$\lambda = c/f$$ Where $c$ is the speed of light in meters/second (or ...


2

If you postulate that receiever's clock is perfect, then you want to make the transmitter send symbols every $T_s \pm \varepsilon$ seconds, where $T_s$ is the symbol period according to the receiver. This is easily achieved by using a very high sampling rate in the transmitter. Let's assume $T_s=1$ and you need a deviation of $\pm 0.01$. This deviation ...


2

There are two types of symbol synchronizers: One shot synchronizers (feed-forward methods by using ML rule, or pilot-assisted techniques) Snycronizers with feedback loops (TED, Gardner, etc.) As far as I see, the packets that you captured are quite short and you are using a snyc algorithm with feedback. Feedback algorithms (or circuits) requires a sattle ...


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