Hot answers tagged

10

Is there any trade-off in numerical precision or speed? Yes. For delays that are integer multiples of the sampling period method 1 is far superior: it's computationally efficient, it's bit-exact, it's easy to implement and it's almost fool proof. Method 2 is computationally expensive, you need to pick an FFT length (which is not trivial) it's subject to ...


4

In a PDM microphone, the sigma-delta convertor pushes the noise to frequency regions above the 0-20kHz spectrum. So if you'd take the FFT of the signal that comes directly from the PDM microphone, the straight zeros and ones, and only look at the bins that fall in the 0-20kHz region, you'd get the data that you need. You can see this here, where a 16kHz sine ...


4

At the risk of blowing my own trumpet and that of my co-author, Bob Williamson, there is also this paper which shows the equivalence of three techniques referred to in the FIR link in Ben's answer and also referred to in the paper linked to from Hilmar's answer. The two results that are of particular interest are Proposition's 2 and 3 of the paper, ...


3

As Hilmar pointed out, for delays that are integer multiples of the sampling period, method 1 is far superior. Also, Method 1 is more suitable for real-time operations as you don't need to buffer the data to perform the FFT. For delays that are non-integer multiples of the sampling period you can adapt method 1 by using an FIR or IIR filter using Lagrange ...


3

Q1: Is this the correct way (or a valid way) to get a dB amplitude from a sample? Assuming you want to build a sound pressure level meter the answer would be a resounding "no". The correct way is to build a running energy detector with a proper time management as defined in the IEC standard IEC61672. https://webstore.iec.ch/publication/5708. This ...


2

The multibit reference signal is typically not sinusoidal, can have offset and substantial noise, but is expected to contain one dominant frequency. Against offset, you'd practically always start your processing with a high-pass filter. If you know your dominant frequency to be sufficiently less than Nyquist, a fixed low-pass filter would also be a cheap ...


2

One approach is to use a phase/frequency detector as the circuit determining error and to ensure that the initial loop bandwidth is wide enough to “see” both the weaker signal that would otherwise be a false acquisition as well as the strongest signal desired. The loop will lock onto the strongest signal within the loop bandwidth as long as it is 6 dB above ...


2

Is there a relation? Generally no. Squaring is a highly non-linear operation and completely changes the amplitude statistics and spectrum of the original signal. A simple example: if your input consists of a few sine waves of different frequency, the output will be all positive and the spectrum will contain lines are all possible combinations of sum and ...


2

Are you using the correct FFT form for spectral analysis? You need to divide by N when mapping time->frequency domain with an N-point FFT for a power spectrum. If you want power spectral density you have to factor in the bin bandwidth and window effective noise bandwidths. The amplitude of a spectral line represents the power of a single signal frequency,...


2

The gain is completely arbitrary and you can scale it as desired for the overall receiver or transmitter design. Where special attention must be paid is with fixed point design where the best practice is to let the filters grow the signal- do not scale the coefficients or the input as that only introduces more quantization noise and degrades SNR. Let the ...


2

The answer to this question is yes. There exist a fast triangle transform, FTT, for triangle waves which has a complexity of $N\log_2(N)$, where $N$ is the number of elements. It works the same like FFT and DFT, and it uses complex vectors, which means it will give you phase information for each triangle wave as well! Please have a look at the C-code ...


2

The best way to do ae this measurement: Use a sine wave generator that is phase locked to your data acquisition clock with a frequency that's an integer multiple of your sample rate divided by the FFT length. If you do this, the period of your sine wave becomes an integer number of samples, you don't get any spectral spreading and you don't need any ...


2

While I'd still like to know the answer to my question about how to merge multiple FFT bins into one, the real solution to increasing the selectivity was much easier to solve: I just had to use a different windowing function. Here's the result of step 2 for 3 cases: no windowing function (blue), using the Blackmann window that I used earlier (green), and ...


2

For a continuous-time signal this decomposition is precisely the Laplace Transform, and for a discrete time signal, the z-transform. Both decompose a time domain waveform into decaying and growing exponentials. This is clear from observing the formulas and seeing the underlying operation similar to generalized correlation which is a sum of products: Here is ...


1

Yes, you are right. It is a lot of FFTs, but remember it is a lot of samples as well. If you have a FFT algorithm with complexity $O(n \cdot log(n))$, then for the 2D scenario you will have an algorithm with complexity $O(M \cdot (N \cdot log(N)) + N\cdot (M \cdot log(M)))$ but if you express this in terms of $M \cdot N$, what you get is. $O(M \cdot N \cdot (...


1

The array $[\sqrt{x_{1}^2 + y_{1}^2 + z_{1}^2}, \sqrt{x_{2}^2 + y_{2}^2 + z_{2}^2},...,\sqrt{x_{3000}^2 + y_{3000}^2 + z_{3000}^2}]$ is a vector of the Euclidean lengths of 3000 3D-space vectors. The designation RMS (root mean square) is usually used for the square root of the arithmetic mean of the squares of serial values of the same kind. It is not used ...


1

I think there is a better way of writing the twiddle factor. Instead of using a different "basis" for each stage, you can use the FFT length as the base for all twiddle factors and the only thing that changes between stages is the step size. Stage 0: $W_{16}^0$ Stage 1: $W_{16}^0, W_{16}^4 $ Stage 2: $W_{16}^0, W_{16}^2,W_{16}^4, W_{16}^6 $ ...


1

You got it mostly backwards, but otherwise OK :) This can be pretty directly answered by writing down what the Cooley-Tukey FFT's twiddle factor $W_N$ is: $$W_N=e^{-i\frac{2\pi}{N}}$$ and that's it. For example, in your picture, in Stage 0, you're multiplying with $W_2^0=\left(e^{-i\frac{2\pi}{N}}\right)^0=e^{-i\frac{2\pi0}{N}}=e^0=1$. So k is the index ...


1

If it's not obvious from the other three (at this writing) answers: scale it to match he problem at hand. All of the three suggested scalings so far (energy = 1, DC gain = 1, maximum coefficient = full scale for your data type, then scale the output) are valid in different circumstances. And don't sweat over trying to find a universal "correct" ...


1

I recommand to have the input and the output of the filter at same level (resampling included). This means a gain of 1 in linear or 0 dB. It is consistant and useful for reuse. The best way to preliminary verify for the gain on a low pass filter is to inject a DC constant signal. Usualy, I tune the taps level to compensate the fractional part of the gain. ...


1

My recommendation is to normalize the filter impulse response to have energy equal to 1. In continuous time, the digital communication system will transmit a symbol $a_i$ using the pulse $$s(t) = a_ip(t),$$ where $p(t)$ is an RRC pulse. The receiver will recover $a_i$ from $s(t)$ using a matched filter: \begin{align} a_i &= \int_{-\infty}^\infty a_i p(t)...


1

To start with, XAPP1161's developers re-use, for their transmitter and receiver blocks, the objects dsp.ChannelSynthesis and dsp.Channelizer, respectively. These are objects of MATLAB's DSP System Toolbox. The Channel Synthesizer block diagram corresponds to the transmitter block in XAPP1161's Figure 3 Polyphase Filter Bank (page 3), and the Channelizer ...


1

Absolute phase is rarely meaningful since is it's highly dependent on your exact definition of your time reference, i.e. what exactly does $t=0$ mean. Since your time reference changes from frame to frame, so does the phase. If you know the fundamental frequency EXACTLY and it's phase locked to your sample clock, you can fix this simply by making the hop ...


1

Can the FFT reduce its computation load for specific sparse data patterns? Sort of but only of it's very sparse. You can always NOT use an FFT but implement the inverse FFT directly and omit the 0 terms from the sum. We can guestimate the break even point. An FFT takes about 10 operations per butterfly and for a length 256 FFT you have 8 stages with 128 ...


1

No, you should calculate the RMS sound pressure. The definition of sound pressure level is $$ L_p = 20\lg\frac{p}{p_{ref}} $$ where $p$ is the root mean square sound pressure and $p_{ref}$ is the reference sound pressure. For monochromatic sound wave, $p_{rms}= \frac{\sqrt{2}}{2}p_{max}$. As for dBA, you don't have to go spectral, just use an A-weighting ...


1

The reason the bandpass filter eliminated the problem is because it removed the DC component. This can also be done by simply subtracting the average before taking the DFT. However there is much more to understand in this question that should be of interest to the OP, and after reading and understanding the detail given below, this first statement should ...


1

It just goes through all integers and looks which divides N, then notes that down, divides N by that factor (as often as possible), and moves on to the next integer. See the source code on https://github.com/FFTW/fftw3/blob/master/kernel/primes.c#L92 (powers of two are handled before, since bitwise shifting is easy): for (i = 3; i * i <= n; i += 2) if (!...


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