# Tag Info

12

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

10

Oppenheim and Willsky's Signals and Systems or Lathi's Linear Systems and Signals are intended for Sophomores who have only a single semester of differential equations under their belts, so it is a bit unfair to criticize them for leaving out the functional analysis and the conformal mapping. At the sophomore level my favorite book is Siebert's Circuits, ...

8

I usually do this by creating a low pass filter that entirely passes through the signal that I want to delay. I create the LPF "manually" by creating a windowed sinc function. Something along the lines of- filt = sinc(-80:.8:80); filt = filt .* hamming(length(filt)).'; This gets you a filter that passes about 80% of the nyquist region (the 80% is set by ...

8

Q format numbers are fixed-point, which means they can be manipulated by integer ALUs, rather than needing to use a floating-point unit. In a DSP setting, this is useful for greater speed and lower power consumption, since fixed-point arithmetic is much simpler than floating-point. On the other hand, the main advantage of using a floating-point ...

7

Octave is a multi-platform open source math and matrix toolkit. It has a command line interpreter aimed to be very similar to MATLAB, but there is also a C++ API available for use. Since you refer to signal processing in contrast to image processing, I assume you mean audio processing, so you might need to look into the "signal" and "audio" packages in ...

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

6

If you look at the spectrum of speech sounds, you will notice that less energy is present in the highest frequencies, with an overall decreasing slope. The goal of the pre-emphasis filter is to counter-balance this, and flatten the spectrum. This helps for one or several of the following reasons, depending on your application: In an analog speech ...

6

You can do a lot for "free" by working with python/numpy. You can work with .wav files. Most computers have some kind of sound proceseeing hardware for audio I/O, but you may want to get a sound card if you're computer doesn't already have this. You can record audio for processing using Windows Sound Recorder. Numpy has tools for importing and exporting ....

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 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 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 ... 5 You should take a look at "Mathematical Methods and Algorithms for Signal Processing" by Moon and Stirling. The only downside is its long list of errata, so hopefully there will be a new edition soon. A beautiful book about the Fourier transform as it's used in signal and system theory is "The Fourier Integral and its Applications" by Papoulis. It's quite ... 5 To answer your first question, what they mean is that the first training symbol only encodes data on the even-numbered subcarriers. The other subcarriers are set to zero. That is, the frequency-domain, $$X[k] = \begin{cases} s_k, &k \text{ mod } 2 = 0 \\ 0, &\text{otherwise} \end{cases}$$ The symbols to encode on the even-numbered subcarriers$...

5

The analytic way is to substitute the variable $z$ by $e^{j\omega}$ to get the frequency response $H(\omega)$ (with $\omega = \frac{2 \pi f}{F_s}$) - that is to say, the frequency response is the $z$ transform evaluated on the unit circle. Note that matlab has a built-in function for plotting the frequency response straight from filter coefficients (freqz), ...

5

Addition and subtraction usimg floating point representations requires a normalization step at the end, which requires more instructions in a software FP implementation and more transistors and longer (thus probably having higher electrical capacitance) wires in a hardware implementation. Thus, depending on the DSP implementation, using floating point may ...

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

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.

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

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

4

Have you checked out gnuradio? They have blocks similar to what is used in signal processing. When I used to a few years ago, there were a large number of blocks that were already available and more in the works, all written in C++. The blocks were glued together using python, but a complete C++ implementation was in the works.

4

First of all, your transfer function has a pole at $z=-3$, which means your filter is unstable and you will probably see your output going to infinity if your process anything with it. However, in general, you can process an impulse with your difference equation and do an FFT (or freqz) of the resulting impulse response. That should give the same result as ...

4

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

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

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