Code Snippets Section Now LIVE
The new code sharing section is now live and can be accessed HERE.
Please take a few minutes to rate and/or comment the snippets that you have the expertise to judge.
If you think of some code snippets that you would like to share with the DSP community, please apply to become a contributor HERE.
If you are not aware of the reward program for contributors, your can learn about it HERE.
As always, your comments and suggestions are...
Discrete Wavelet Transform Filter Bank Implementation (part 1)
UPDATE: Added graphs and code to explain the frequency division of the branches
The focus of this article is to briefly explain an implementation of this transform and several filter bank forms. Theoretical information about DWT can be found elsewhere.
First of all, a 'quick and dirty' simplified explanation of the differences between DFT and DWT:
The DWT (Discrete Wavelet Transform), simply put, is an operation that receives a signal as an input (a vector of data) and...
Personal presentation and greetings
Hello fellow DSPrelated readers!
First of all, my name is David Valencia, I live in Mexico City and study in the Instituto Politécnico Nacional [IPN] (or National Polytechnic Institute) with a major in Telematic engineering. I'm 21 years old and have interest in telecommunications, signal transmission and networking.
I'm honored with the chance to cooperate with this great community, and I will work hard in order to lend a hand to all you people interested in DSP...
Least-squares magic bullets? The Moore-Penrose Pseudoinverse
Hello,
the topic of this brief article is a tool that can be applied to a variety of problems: The Moore-Penrose Pseudoinverse.While maybe not exactly a magic bullet, it gives us least-squares optimal solutions, and that is under many circumstances the best we can reasonably expect.
I'll demonstrate its use on a short example. More details can be found for example on Wikipedia, or the Matlab documentation...
New Code Sharing Section & Reward Program for Contributors!
UPDATE (11/02/2010): The code section is now live.
UPDATE 2 (01/31/2011): The reward program has changed. A flat fee of $20 per code snippet submitted will now be paid.
_______________
I am very happy to finally announce the imminent launch of the new code sharing section. My vision for this new section is a rich library of high quality code snippets for the DSP community, from processor specific functions to Matlab or Scilab routines, from the simplest filter...
Fitting Filters to Measured Amplitude Response Data Using invfreqz in Matlab
This blog post has been moved to the code snippet section and can now be found HERE. Please update your bookmark. Thanks!
Radio Frequency Distortion Part II: A power spectrum model
SummaryThis article presents a ready-to-use model for nonlinear distortion caused by radio frequenfcy components in wireless receivers and linear transmitters. Compared to the similar model presented in my earlier blog entry, it operates on expectation values of the the power spectrum instead of the signal itself: Use the signal-based model to generate distortion on a signal, and the one from this article to directly obtain the power spectrum much more efficiently.In...
Understanding Radio Frequency Distortion
OverviewThe topic of this article are the effects of radio frequency distortions on a baseband signal, and how to model them at baseband. Typical applications are use as a simulation model or in digital predistortion algorithms.
IntroductionTransmitting and receiving wireless signals usually involves analog radio frequency circuits, such as power amplifiers in a transmitter or low-noise amplifiers in a receiver.Signal distortion in those circuits deteriorates the link quality. When...
Computing FFT Twiddle Factors
Some days ago I read a post on the comp.dsp newsgroup and, if I understood the poster's words, it seemed that the poster would benefit from knowing how to compute the twiddle factors of a radix-2 fast Fourier transform (FFT).
Then, later it occurred to me that it might be useful for this blog's readers to be aware of algorithms for computing FFT twiddle factors. So,... what follows are two algorithms showing how to compute the individual twiddle factors of an N-point decimation-in-frequency...
Knowledge Mine for Embedded Systems
I stumbled upon a great website (actually I found it on the google ads in gmail!) with comprehensive and deep information on embedded systems. The website talks about four main categories in embedded systems:
1) Embedded Systems Design.
2) Design Life cycle.
3) Design Methods.
4) Design Tools.
What I found special about this website is that when browse through the systems design section, you usually find a...
The Little Fruit Market: The Beginning of the Digital Explosion
There used to be a fruit market located at 391 San Antonio Road in Mountain View, California. In the 1990's I worked part time in Mountain View and drove past this market's building, shown in Figure 1, many times, unaware of its history. What happened at that fruit market has changed the lives of almost everyone on our planet. Here's the story.
William Shockley In 1948 the brilliant physicist William Shockley, along with John Bardeen and Walter Brattain, co-invented the transistor at Bell...
Approximating the area of a chirp by fitting a polynomial
Once in a while we need to estimate the area of a dataset in which we are interested. This area could give us, for example, force (mass vs acceleration) or electric power (electric current vs charge).
A multiuser waterfilling algorithm
Hello,this blog entry documents a code snippet for a multi-user waterfilling algorithm. It's heuristic and relatively straightforward, making it easy to implement additional constraints or rules.I rewrote parts of it to improve readability, but no extensive testing took place afterwards. Please double-check that it does what it promises.
Introduction to multiuser waterfilling.Background information can be found for example in the presentation from Yosia Hadisusanto,
Implementing Simultaneous Digital Differentiation, Hilbert Transformation, and Half-Band Filtering
Recently I've been thinking about digital differentiator and Hilbert transformer implementations and I've developed a processing scheme that may be of interest to the readers here on dsprelated.com.
Handy Online Simulation Tool Models Aliasing With Lowpass and Bandpass Sampling
Analog Devices Inc. has posted a neat software simulation tool on their corporate web site that graphically shows the aliasing effects of both lowpass and bandpass periodic sampling. This is a nice tutorial tool for beginners in DSP.
The tool shows four important characteristics of periodic sampling:
Characteristic# 1: All input analog spectral components, regardless of their center frequencies, show up (appear) below half the sample rate in the digitized...Implementing Impractical Digital Filters
This blog discusses a problematic situation that can arise when we try to implement certain digital filters. Occasionally in the literature of DSP we encounter impractical digital IIR filter block diagrams, and by impractical I mean block diagrams that cannot be implemented. This blog gives examples of impractical digital IIR filters and what can be done to make them practical.
Implementing an Impractical Filter: Example 1
Reference [1] presented the digital IIR bandpass filter...
Digging into an Audio Signal and the DSP Process Pipeline
In this post, I'll look at the benefits of using multiple perspectives when handling signals.A Pre-existing Audio FileLet's say we have an audio file of interest. Let's load it into Audacity and zoom in a little (using View → Zoom → Zoom In, multiple times). The figure illustrates the audio signal: just a basic single-tone signal.
By continuing to zoom into the signal, we eventually get to the point of seeing individual samples as illustrated below. Notice that I've marked one...
Correlation without pre-whitening is often misleading
White LiesCorrelation, as one of the first tools DSP users add to their tool box, can automate locating a known signal within a second (usually larger) signal. The expected result of a correlation is a nice sharp peak at the location of the known signal and few, if any, extraneous peaks.
A little thought will show this to be incorrect: correlating a signal with itself is only guaranteed to give a sharp peak if the signal's samples are uncorrelated --- for example if the signal is composed...
OpenCV for DSP/GPU, MSDN equivalent for CCS, and more
A great business opportunity might await anyone brave enough to attempt a port of the OpenCV (Open Computer Vision) library to a DSP platform. OpenCV is the lingua franca of "industrial grade" image processing, and it's my sense that the DSP imaging libraries out there pale in comparison to the breadth of features offered by OpenCV. When writing my book for example, I fielded multiple inquiries about making an OpenCV port a centerpiece of the text. Two problems arise,...DSPRelated Finally on Twitter!
Hello!
It's been a while since you've heard from me - and there are many reasons why:
1 - I've made a clown of myself (video here)
2 - I've been working on unifying the user management system. You can now participate to the three related sites (DSPRelated, FPGARelated and EmbeddedRelated) with only one account (same login info).
3- I've been working on getting up to speed with social networks and especially Twitter. I have resisted the idea for a while - at 40...
Polar Coding Notes: A Simple Proof
For any B-DMC $W$, the channels $\{W_N^{(i)}\}$ polarize in the sense that, for any fixed $\delta \in (0, 1)$, as $N$ goes to infinity through powers of two, the fraction of indices $i \in \{1, \dots, N\}$ for which $I(W_N^{(i)}) \in (1 − \delta, 1]$ goes to $I(W)$ and the fraction for which $I(W_N^{(i)}) \in [0, \delta)$ goes to $1−I(W)^{[1]}$.
Mrs. Gerber’s Lemma
Mrs. Gerber’s Lemma provides a lower bound on the entropy of the modulo-$2$ sum of two binary random...
Analytic Signal
In communication theory and modulation theory we always deal with two phases: In-phase (I) and Quadrature-phase (Q). The question that I will discuss in this blog is that why we use two phases and not more.
The Beginning of a New Chapter
Jacob Beningo and I had been dreaming about organizing an in-person event for many years. But every time we looked into it seriously, a few phone calls to potential venues were enough to remind us of the financial risks involved. We never quite found the courage to pull the trigger.
Until this year.
The urge to move forward was simply too strong. After several successful years of running the DSP Online Conference and the
How the Cooley-Tukey FFT Algorithm Works | Part 2 - Divide & Conquer
The Fast Fourier Transform revolutionized the Discrete Fourier Transform by making it much more efficient. In part 1, we saw that if you run the DFT on a power-of-2 number of samples, the calculations of different groups of samples repeat themselves at different frequencies. By leveraging the repeating patterns of sine and cosine values, the algorithm enables us to calculate the full DFT more efficiently. However, the calculations of certain groups of samples repeat more often than others. In this article, we’re going to explore how the divide-and-conquer method prepares the ground for the next stage of the algorithm by grouping the samples into specially ordered pairs.
The Nature of Circles
What do you mean?When calculating the mean of a list of numbers, the obvious approach is to sum them and divide by how many there are.
Suppose I give you a list of two numbers:
- 0
- 359
What is their mean? The obvious answer is 179.5.
If I told you that the numbers were compass bearings in degrees, what would your answer be then? Does 179.5 seem correct?
In the case of compass bearings, 0 is the same direction as 360. When talking about angles in the DSP world, we often talk about...
Unit Testing for Embedded Algorithms
Happy Holidays! For my premier article, I am writing about my favorite technique to use when designing and developing software- unit testing. Unit testing is a best practice when designing software. It allows the designer to verify the behavior of the software units before the entire system is complete, and it facilitates the change and growth of the software system because the developer can verify that the changes will not affect the behavior of other parts of the system. I have used...
The 2024 DSP Online Conference
Here we go!
This week is the fifth edition of the DSP Online Conference! This milestone year marks our 5th anniversary, and we’re celebrating with a stellar lineup of renowned DSP experts like fred harris, Rick Lyons, Julius Orion Smith III, and Dan Boschen. These industry leaders will be generously sharing their knowledge and insights with the DSP community.
Why Attend?
Even if your schedule is packed this week, purchasing a pass grants you on-demand access to all...
Compressive Sensing - Recovery of Sparse Signals (Part 1)
The amount of data that is generated has been increasing at a substantial rate since the beginning of the digital revolution. The constraints on the sampling and reconstruction of digital signals are derived from the well-known Nyquist-Shannon sampling theorem...
Improved Three Bin Exact Frequency Formula for a Pure Real Tone in a DFT
IntroductionThis is an article to hopefully give a better understanding of the Discrete Fourier Transform (DFT) by extending the exact two bin formulas for the frequency of a real tone in a DFT to the three bin case. This article is a direct extension of my prior article "Two Bin Exact Frequency Formulas for a Pure Real Tone in a DFT"[1]. The formulas derived in the previous article are also presented in this article in the computational order, rather than the indirect order they were...
Project update-1 : Digital Filter Blocks in MyHDL and their integration in pyFDA
This blog post presents the progress made up to week 5 in my GSoC project “Digital Filter blocks and their integration in PyFDA”. Progress was made in two areas of the project.
This post will primarily discuss filter block implementation. The interface will be discussed in a later post once further progress is made.
Direct form-I FIR filterThe equation specifies the direct form I...























