13

The concept is based on the convolution theorem, which states that for two signals $x(t)$ and $y(t)$, the product of their Fourier transforms $X(f)$ and $Y(f)$ is equal to the Fourier transform of the convolution of the two signals. That is: $$ \mathcal{F}\{x(t) * y(t)\} = \mathcal{F}\{x(t)\}\mathcal{F}\{y(t)\} $$ You can read more on the derivation of ...


7

If your signal is real-valued, then it's spectrum is conjugate symmetric. That means, that negative frequencies (or frequencies from $\frac{f_s}{2}$ up to $f_s$) are mirrored. Thus we can always neglect frequencies above Nyquist range. Although, if your signal is complex valued, then such symmetry won't exist, and frequencies above $\frac{f_s}{2}$ contain ...


7

The answer is: yes, sampling in the frequency domain causes aliasing in the time domain, exactly like the dual case: sampling in the time domain causes aliasing in the frequency domain. There are many ways to see this. One standard way is to sample the discrete-time Fourier transform (DTFT) of a discrete-time signal by multiplying it with a Dirac comb and ...


6

I think you made a mistake between the power spectrum and the Fourier Transform. This is the right form of the Convolution Theory (Nothing is squared): $$ \lvert Y(\omega)\rvert = \lvert H(\omega) X(\omega)\rvert $$ Try this and it will work for you on MATLAB. MATLAB Code % Calculating the Magnitude of the Filtered Signal vFilterCoeff = [1; 2; 3; 4; 5]; ...


6

Essentially, the reason why you need two tones is to ensure that a normal human voice can't replicate the tones. As such, by simultaneously generating a tone from a high-frequency group and low-frequency group, it is highly improbable that a human voice can replicate a sound from such differing ends of the frequency spectrum at the same time. If we were ...


6

Since what interests you is the "embedded system" part, and since you have a low budget (this excludes anything that requires proprietary compilers), I'd recommend building yourself a board with an ARM MCU and a codec, like this one. There's less than $50 of parts - the processor, the codec and the bare minimum to get them to work. I'm recommending this ...


6

A canonical implementation of a digital filter has the minimum number of delay elements. The same filter cannot be implemented with less memory. Since memory is often not the only concern, a canonical implementation is not necessarily always the best implementation on a given platform.


6

The etymology refers to the canon, as a rule or a body of rules, or axiomatic or universal standards. It exists in arts: sculpture, music, script writing, etc. The notion of canon law is also used in the domain of religion: a "set of ordinances and regulations [...] for the government of a Christian organization or church and its members". In ...


5

Your counterexample to the book's assertion is confusing between two different uses for $n$. There was a question earlier in which some user (endolith? datageist?) gave an answer containing a detailed description of what exactly this confusion is and how to interpret the results correctly. My cursory search has not found this great answer, and so I will ...


5

The usual way to estimate the amplitude of a particular frequency is to use the Goertzel algorithm. There is a good write-up by Rick Lyons here. Even though Rick's writeup is about single tone detection, it can be applied when multiple tones are present, too.


5

This is related to Chirp Z-transform (CZT) (refer to the Bluestein's algorithm). Using this identity, the CZT can be expressed in terms of a convolution. Hence, it can be efficiently implemented using FFT.


5

Matlab’s ‘upsample()’ command does not “pad” a sequence with zero-valued samples. The ‘upsample()’ command “stuffs” a sequence with zero-valued samples. “Zero padding” and “zero stuffing” are two different operations. “Zero padding” means appending a sequential string (a sequence) of zero-valued samples to the beginning or end of a sequence. I believe ...


5

The general topic of finding similarities between signals is wide ranging: are the signals of same sampling, length, offset, shift or scale? where do they take their values (discrete, real, complex)? are they stationary? noisy? what do you consider similar (whole signals, chunks, specific features)? which are the invariances looked for? and most important:...


5

The denominator (recursive coefficients Ai) look OK: the poles of your system are at 45 degree angles ($\pi/4$), with magnitude 0.68 (which is not very aggressive for a notch filter; in my opinion they should be more like 0.9). But your numerator has its roots very near $z=1$, which corresponds to frequency 0 instead of the desired $\pi/4$ for implementing ...


5

a Digital Signal Processor is one that has, in its instruction set, some instructions and addressing modes that are optimized for processing digital signals. usually these optimizations can be shown around what is needed to perform the dot-product needed for an FIR filter. $$ y[n] = \sum\limits_{i=0}^{L-1} h[i]\,x[n-i] $$ to do this in, say, $L$ ...


5

8+ high quality inputs for beamfroming and "...beginner friendly..." are competing requirements. There will soon be the audioinjector which attaches on Raspberry Pi and would be a relatively pain-free option for what you mention. You can program the Raspberry in a number of different ways including "low-level" C to high level Python or ...


5

It is a symmetric odd-sized FIR smoothing kernel, belonging to the class of Pascal or binomial filters that somehow sample a Gaussian kernel. Plus, its coefficients are simple dyadic integers, that can be implemented as bit-shifts 1/4 1/2 1/4. The coefficients sum to one, hence it is unit gain at DC. In simpler word: (one of) the simplest real smoother ...


5

I myself recently graduated from Applied Mathematics and began PhD in signal processing. I do Stochastic Geometry modeling of wireless networks in particular, which is quite mathematical subject. It involves measure theory, probability theory, Fourier Analysis etc. etc. The area of Signal Processing is very broad indeed. It of course depends if you want to ...


4

Just change the code to the following: x = randn(1,1000); h = [1 2 3 4 5]; y = conv(x,h); plot((abs(fft(h,1024))).*(abs(fft(x,1024)))); % It's |H(w)||X(w)| hold on plot(abs(fft(y,1024)),'--r') By mistake you raised the DFT of an impulse response to the second power. You could see that magnitudes are bit off, but peaks and valleys are more-less at the same ...


4

Suppose you have given an input signal to a system: $$ x(n)=\begin{cases} 1, & \mbox{if } n=0 \\ 0, & \mbox{if } n\ne 0 \end{cases} $$ Then the output response of that system is known as the impulse response. In your example $h(n) = \frac{1}{2}u(n-3)$. This means that if you apply a unit impulse to this system, you will get an output signal $...


4

First, use a timer and an ISR to get accurate timing (don't forget to configure the NVIC so that this timer interrupt takes over any other ISR that would be running). Only this will ensure a consistant sample rate. Little variations in timing would create noticeable degradations of audio quality. In particular, in your current example, unless the "filters" ...


4

Finding the phase response of a biquad at a specific frequency is simple. Recall the transfer function of a biquad: $$ H(z) = \frac{b_0 + b_1z^{-1} + b_2z^{-2}}{a_0 + a_1z^{-1} + a_2z^{-2}} $$ The frequency response of a system can be calculated by letting $z = e^{j\omega}$, where $\omega$ is a normalized frequency in the range $[-\pi, \pi)$. SO, it would ...


4

This code is splitting a stereo signal with left and right components into a stereo signal with mid and side components, scaling the mid and side components and converting back to left and right components. To convert left (L) and right (R) stereo into mid (M and side (S): $$ M = \frac{L + R}{2} $$ $$ S = \frac{L - R}{2} $$ And back: $$ L = M + S $$ $$ R ...


4

assuming finite power signals: $$ \lVert x \rVert^2 \triangleq \lim_{N \to \infty} \ \frac{1}{2N+1} \sum\limits_{n=-N}^{+N} \big|x[n] \big|^2 \ < +\infty $$ this is a Hilbert Space sorta thingie. define inner product: $$ \langle x,y \rangle \triangleq \lim_{N \to \infty} \ \frac{1}{2N+1} \sum\limits_{n=-N}^{+N} x[n] \cdot \overline{y}[n] $$ where $\...


4

if you are searching for similarity between two signals in frequency domain, you can go for coherence. Coherence indicates frequency components common to both signals


4

Hopefully you'll get a bunch of answers here from the very general to the super specific. I'll put in my two cents here. The recommendations I would make are from the field of radar and communication systems. These systems tend to exercise almost all aspects of signal processing: Signal generation and mixing Sampling, decimating/upsampling Signal ...


3

It's been a while, but if anyone would like a working fixed-point implementation (no floats/doubles) in C you might take a look at: http://www.ti.com/ww/cn/uprogram/share/ppt/c6000/Chapter17.ppt‎ – Slide 14. It looks like it will work beautifully and efficiently in even a low-powered micro-controller. (In which case some of the ‘int’ variables in that TI C ...


3

There is no easy answer to that question. Plenty of algorithms exists which are suitable to that task. Nowadays Non-negative Matrix Factorisation (NMF) is getting more and more popular in this field of research. If you have enough of resources and knowledge then you can try it. It's just a 'fancy' SVD decomposition with some 'constraints and tweaks'. Some ...


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