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

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 ...


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

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

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" ...


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

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

One of the best ways is to hang out on this community. Read questions and answers. Try to replicate results on answers. Once you have more knowledge, try answering questions of others. If you encounter a question on a field you don't know, find resources to read about it until you can answer the question (Assuming it is not deep and requires deep knowledge)....


4

For example, if I'm doing audio processing, wouldn't I just be better off using x86 since that has a larger install base? "Larger" is a good word for the x86. It needs a larger space claim on a PC board, it has a larger price tag, it needs a larger power supplies (and larger batteries if that's how you're powering your app), etc. DSP chips are ...


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 ...


3

Maybe you have a look at Goertzels Algorithm.


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