# Tag Info

10

IEEE float singles only provide about 24 bits of mantissa. But many DSP/filtering algorithms (IIR biquads with poles/zeros near the unit circle, etc.) require far more than 24 bits of mantissa for intermediate computational products (accumulators, etc.), just to get final results accurate to near 16 or 24 bits. For these types of algorithms, 32, 40 and 48-...

9

the CPU/DSP has hardware floating point support for both single and double precision. It really depends on what kind of support you are talking about. On x86, when using the x87 style floating point instructions, you get the full 80-bit internal precision and the same processing time - whether you are working with single or double precision. But when using ...

9

Common Approaches for Commercial Denoisers Commercial denoisers are different than what you'd see on most papers. While on papers the results are mostly using objective metrics (PSNR / SSIM) and are evaluated vs. Additive White Gaussian Noise (AWGN) with high level of noise real world images are mostly with moderate level of noise with Mixed Poisson Gaussian ...

8

What you have is a very good and efficient oscillator. The potential numerical drift problem can actually be solved. Your state variable v has two parts, one is eseentially the real part and the other the imaginary part. Let's call then r and i. We know that r^2+i^2 = 1. Over time this may drift up and down, however that can easily be corrected by ...

7

You need to know the numerical requirements of your algorithm and choose the precision accordingly. So let's do the math here: A 32-bit floating point has a 24 bit mantissa and an 8 bit exponent. This gives you about 150 dB signal to noise ratio over a dynamic range of about 1540 dB. That's plenty for most things audio. Double precision gives you roughly ...

5

A convenient version can be found in Python's scipy.signal.remez. Nice if using numpy/scipy.

5

Maybe a bit late, but since others might land here like me. The following are good signal processing libraries/frameworks: * https://www.gnuradio.org/ - lots of classic signal processing + cascading options * https://root.cern.ch/ - advanced statistical signal processing Both provide generic facade, fall-back implementations as well as performance ...

4

Frequency domain filtering (FFT), as suggested by some comments, is definitely wrong -- it's even slower, or same speed at best! A recursive filter (IIR) is the fastes possible solution. If you choose a typical second order filter (called biquad in engineering slang) of Butterworth type and do your math right (factoring out coefficients) you only have 3 ...

4

Typically you can improve performance by analyzing the data that you want and analyzing the data that you don't want. I would assume that a plane can't turn infinitely fast so the actual "want" data is properly fairly band limited. Depending on how fast you are sampling the accelerometer you may pick up a lot of "out of bandwidth" noise. This could easily be ...

4

The most computationally efficient approach is to set up the data you want in the frequency domain by putting in the tones as "spikes" in the appropriate frequency bins, and then inverse FFT'ing it to get the time domain tones. This approach will likely be a couple of orders of magnitude or so faster than your approach. There are some downsides to doing it ...

4

Actually it seems MATLAB implementation of the filter() function is pretty straight forward and not fast. For a fast implementation, have a look at FilterM by Jan Simon. Update In the latest releases of MATLAB (From R2016b and above) the performance of the filter() function has improved. The metdhos to accelerate those operations are usually based on: ...

4

A quick scribble on paper shows that FMCW radar has a resolution of $$\Delta d = \frac{c}{2b}$$ with $c$ being the speed of wave propagation (aka speed of light, essentially), $b$ being the bandwidth, and $2$ coming into play because the wave has to trave both ways. For your $\Delta d\overset != 1\mathrm m$, $$1\mathrm{m} = \frac{3 \cdot 10^8 \frac{\... 4 A first order lowpass filter is usually implemented like this:$$p[n] = \alpha p[n-1] + (1-\alpha) pi[n]$$Where p[n] is your filtered power estimation, p[n-1] is the previous result, pi[n] is your new measurement (probably the product of instantaneous voltage and current measurements), and \alpha is a positive parameter just less than 1. The ... 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 The serial/parallel converter shown in most OFDM transmitter block diagrams is required in a hardware implementation but not very meaningful for software implementation. Because in software there is no IFFT block that actually works with parallel inputs, it's all serial processing in reality. Let S(k) be your input stream of complex numbers and N be the ... 3 Imaginary part of a complex number is real. For example$$z = 1 - 2j\mathsf{Re}(z) = 1\mathsf{Im}(z) = -2 The same will happen with the imaginary part of your FFT. In the end, you get two real signals. Then you modulate them by two sinusoids which are 90 degrees out of phase, and add the modulated signals at the output stage.

3

This is a pretty old question, but I just want to highlight a point in the answer from pichenettes: For example you want an envelope that goes from 0.8 to 0.2 in 2 seconds [...] break it down into two steps: getting a ramp that goes from 0 to 1.0 in 2 seconds ; and then applying a linear transform that maps 0 to 0.8 and 1.0 to 0.2. This process is ...

3

Some thoughts on it at least. First, if you can shown linearity and time-invariance and you know that the filter has the correct impulse response you are home. Given that the filter is stable. So in this case there is no need to run different other input signals and the frequency response is given based on the impulse response. Checking impulse response is ...

3

Your 2. is (as far as I know) the standard way to implement a FMCW radar. The major advantage of both the FMCW and the SFCW (which was mentioned in the comments), is the sample rate of the ADC is greatly reduced. (This is sometimes called down-conversion, or pulse-compression). After the mixer, you have a mixer sum and mixer difference, filtering out so ...

3

Below shows design considerations for the filter design and you can use common tools in Matlab/Octave and Python Scipy.Signal to determine the filter coefficients (impulse response) using this criteria. (such as the firls and firpm filter design commands in Matlab). When you insert zeros, you create replicas in frequency such as I show in the diagram below, ...

2

Here is another source for the Parks McClellan algorithm in C. This code is different from the SciPy code mentioned above in that it has 61 of the original 69 goto statements removed (the SciPy code still has about 37 goto's). It also fixes the code in 3 places where divide by zero can occur and it has some additional code that range checks the band edge ...

2

If you're working with synthesised audio that undergoes a lot of processing between generation and rendering (conversion to 16/24 bit integer), then you'll benefit from working in the best numerical precision your machine has. It is also important to make a fundamental distinction between integers and floating point numbers. A double-precision floating ...

2

There are two benefits to going to double precision relative to single precision: increased range and better resolution. I would be very surprised if the increased range would make any difference in your application. If it does, there's probably something wrong with your scaling. If there is an improvement it would be in the resolution. Better resolution ...

2

Upsample the signal to desired frequency. You can use linear interpolation (poor quality but simple and fast) or sinc interpolation (good quality but slow). For example of library dedicated to good quality resampling, see libsoxr: http://sourceforge.net/p/soxr/wiki/Home/ Perform dithering with noise shaping. You need to filter the dithering signal to ...

2

To give more variants to Aaron's answer, speech recognition pipeline has multiple stages where you can cut the line between client and server. There are the following variants: Lossless audio (flac) Lossy audio (speex 8kb/s) MFCC features (about 6.3kb/s bitrate) Compressed MFCC features ETSI distributed speech recognition standard, 4.4 kb/s bitrate Phonetic ...

2

Its probably safe to assume that all of the major companies send enough information to reconstruct the audio. This is because having that audio for training is such a valuable resource. A certain percentage of the audio segments will be listened to and transcribed by a human annotator. Also features in these systems are more complicated than MFCCs. You ...

2

SIDPAC is a freely available program from software.nasa.gov. It is targeted toward aircraft system id problems however the underlying methods are applicable to other problem types.

2

I was looking for a way of converting MATLAB code to C/C++ that I found Armadillo: http://arma.sourceforge.net/license.html. It's a C++ library covering various categories such as signal and image processing, statistics, matrix and vector, etc. For implementing a FIR filter for example, one can use the convolution (conv(A,B)) function.

2

It sounds like ImageMagick is a good fit for you. Give it a try and tell us what you think.

2

Shameless plug ahead. A 1D $M$-band dual-tree wavelet toolbox can be found in 1D Wavelet decompositions : Matlab toolbox for 1D dual-tree M-band wavelet decomposition, and we just shared the 2D version embedded in a code for multivariate Gaussian noise image filtering in $M$-band 2D dual-tree (Hilbert) wavelet multicomponent image denoising. It is not as ...

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