Negative frequency doesn't make much sense for sinusoids, but the Fourier transform doesn't break up a signal into sinusoids, it breaks it up into complex exponentials (also called "complex sinusoids" ...

The sampling rate of a real signal needs to be greater than twice the signal bandwidth. Audio practically starts at 0 Hz, so the highest frequency present in audio recorded at 44.1 kHz is 22.05 kHz (...

Cross-correlation and convolution are closely related. In short, to do convolution with FFTs, you zero-pad the input signals a and b (add zeros to the end of each. The zero padding should fill the ...

filtfilt is zero-phase filtering, which doesn't shift the signal as it filters. Since the phase is zero at all frequencies, it is also linear-phase. Filtering backwards in time requires you to ...

The physically "correct" way to do this is summing the samples. However when you add two arbitrary samples, the resulting value could be up to twice the maximum value. ... The naive solution here is ...

I've been reading about this and there are multiple ways to do it, using different size N. My Matlab is rusty, so here they are in Python (N is length of input signal x, k is arange(N) = \$[0, 1, 2, .....

Hmmm... I guess Radon transform isn't that easy to extract from. (Radon transform basically rotates the image while "looking through it" edge-on. It's the principle behind CAT scans.) The transform ...

It depends on context. In signal processing, a spectrum (plural is spectra) shows the frequency content of an entire signal. It's a 1-dimensional function of amplitude (vertical axis) vs frequency (...

What your distortion box does is apply a non-linear transfer function to the signal: output = function(input) or y = f(x). You're just applying the same function to every individual input sample to ...

I'm guessing the other frequencies it gets are harmonics of the fundamental? Like you're playing 100 Hz and it picks out 200 Hz or 300 Hz instead? First, you should limit your search space to the ...

One thing that really helped me understand poles and zeros is to visualize them as amplitude surfaces. Several of these plots can be found in A Filter Primer. Some notes: It's probably easier to ...

This is not the best solution, but it's a solution. I'd like to learn of better techniques: If they were not going to be rotated or scaled, you could use a simple cross-correlation of the images. ...

Sorry I don't know OpenCV, and this is more a pre-processing step than a complete answer: First, you don't want an edge detector. An edge detector converts transitions (like this dark-to-light): ...

Noise is quite good (hard to compress), but it becomes grey when looking from far, becoming easy to compress. A good pattern would be kind of fractal, looking similar at all scales. Well, there is ...

One method that works if there's a relatively strong drum beat is to take the magnitude of the STFT of the waveform, and then auto-correlate it in only the time dimension. The peak of the auto-...

This isn't a great question, but I'll try to answer: All the files that I have, have two channels. A spectrogram can only show one channel at a time. Either make one spectrogram for each channel,...

Yes, deconvolution. This page describes a number of deconvolution methods and methods for estimating the point spread function: Removing Motion Blur from Astrophotographic Images They say the ...

These plots were helpful for me to understand, coming from a STFT background: The complex Morlet (sinusoidal) wavelet looks and behaves like the complex kernel of a STFT (since it's derived from the ...

For the last week or so I have been trying to understand how quantization error results in the noise floor outside of a mathematical perspective and I haven't really had any luck finding a source that ...

You need to plot the magnitude of the output of the FFT. I'm not familiar with your programming language, but in Python you would use something like plot(abs(fft(a))). For a silent input, the output ...

This is called biphase mark code, and you have to focus on the zero-crossings instead of the pulse amplitudes. You have multiple zero crossings per pulse, though, because of the low-cut filters ...

You are right that the repetition is around 650 by how exactly do I compute that automatically? Seems like a peak-picking problem to me? Or is there some other methods that can be used? Yes, it's ...

I've tried to get the bin with greatest magnitude but that only give me right results for higher pitch signals, it doesn't matter which oversampling factor I use I still get bad data for low freq ...

Yes, Butterworth are IIR. The decay from an impulse technically lasts forever. Yes, all [implementable] IIR are causal. Yes, because of #1 and #2. Don't use signal.filtfilt. Use signal.lfilter. ...

So the issue is that your filter order is too high. There are 2 problems with this: SciPy has a bug that generates inaccurate filters at high orders. On any platform, higher-order filters cannot be ...

Yes, you could hardcode the values, do an FFT of your signal, and multiply by the hardcoded values, then get the amplitude in the frequency domain from Parseval's theorem (example). You could also ...

Why is the fourier transform a special case of the laplace transform? The Laplace transform produces a 2D surface of complex values, while the Fourier transform produces a 1D line of complex values. ...

To explain the problem (without solving it): However, for some reason, besides seeing the pure 17KHz frequency, I also hear (and see on the oscilloscope) parasitic 5KHz frequency! Your sampling ...