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...
Hidden Linear Algebra in DSP
Linear algebra (LA) is usually thought of as a blunt theoretical subject. However, LA is found hidden in many DSP algorithms used widely in practice.
An obvious clue in finding LA in DSP is the linearity assumption used in theoretical analysis of systems for modelling or design. A standard modelling example for this case would be linear time invariant (LTI) systems. LTI are usually used to model flat wireless communication channels. LTI systems are also used in the design of digital filter...
Computing an FFT of Complex-Valued Data Using a Real-Only FFT Algorithm
Someone recently asked me if I knew of a way to compute a fast Fourier transform (FFT) of complex-valued input samples using an FFT algorithm that accepts only real-valued input data. Knowing of no way to do this, I rifled through my library of hardcopy FFT articles looking for help. I found nothing useful that could be applied to this problem.
After some thinking, I believe I have a solution to this problem. Here is my idea:
Let's say our original input data is the complex-valued sequence...
Premium Forum?
Chances are that by now, you have had a chance to browse the new design of the *related site that I published several weeks ago. I have been working for several months on this and I must admit that I am very happy with the results. This new design will serve as a base for many new exciting developments. I would love to hear your comments/suggestions if you have any, please use the comments system at the bottom of this page.
First on my list would be to build and launch a new forum...
Looking For a Second Toolbox? This One's For Sale
In case you're looking for a second toolbox, this used toolbox is for sale.The blue-enameled steel toolbox measures 13 x 7 x 5 inches and, when opened, has a three-section tray attached to the lid. Showing signs of heavy use, the interior, tray, and exterior have collected a fair amount of dirt and grease and bear many scratches. The bottom of the box is worn from having been slid on rough surfaces.
The toolbox currently resides in Italy. But don't worry, it can be shipped to you....
Phase and Amplitude Calculation for a Pure Complex Tone in a DFT
IntroductionThis is an article to hopefully give a better understanding of the Discrete Fourier Transform (DFT) by deriving exact formulas to calculate the phase and amplitude of a pure complex tone from a DFT bin value and knowing the frequency. This is a much simpler problem to solve than the corresponding case for a pure real tone which I covered in an earlier blog article[1]. In the noiseless single tone case, these equations will be exact. In the presence of noise or other tones...
A Markov View of the Phase Vocoder Part 1
IntroductionHello! This is my first post on dsprelated.com. I have a blog that I run on my website, http://www.christianyostdsp.com. In order to engage with the larger DSP community, I'd like to occasionally post my more engineering heavy writing here and get your thoughts.
Today we will look at the phase vocoder from a different angle by bringing some probability into the discussion. This is the first part in a short series. Future posts will expand further upon the ideas...
Exploring Human Hearing Range
Human Hearing RangeIn this post, I'll look at an interesting aspect of Audacity – using it to explore the threshold of human hearing. In my book Digital Signal Processing: A Gentle Introduction with Audio Examples, I go into this topic and I include a side note on the amazing hearing range of our canine companions.
Creating a Test Audio FileAudacity allows for the generation of a variety of test signals. If you click the Generate->Tone menu, it looks something like...
Modelling a Noisy Communication Signal in MATLAB for the Analog to Digital Conversion Process
A critical thing to realize while modeling the signal that is going to be digitally processed is the SNR. In a receiver, the noise floor (hence the noise variance and hence its power) are determined by the temperature and the Bandwidth. For a system with a constant bandwidth, relatively constant temperature, the noise power remains relatively constant as well. This implies that the noise variance is a constant.
In MATLAB, the easiest way to create a noisy signal is by using...
Python number crunching faster? Part I
Everyone has their favorite computing platform, regardless if it is Matlab, Octave, Scilab, Mathematica, Mathcad, etc. I have been using Python and the common numerical and scientific packages available. Personally, I have found this to be very useful in my work. Lately there has been some chatter on speeding up Python.
From another project I follow, MyHDL, I was introduced to the Python JIT compiler,
Accelerating Matlab DSP Code on the GPU
Intrigued by GPUs, I've spent a few days testing out Jacket, an interface that lets you accelerate MATLAB (my favorite, if frustrating language) on NVIDIA GPUs. It's definitely got some caveats. But it was really easy to accelerate my code. And the results were impressive. So I thought I'd put up a few simple DSP-related benchmarks I created and ran on my laptop (a Macbook Air with NVIDIA GeForce 9400M graphics card). The m-files for the two functions I benchmarked (2D FFT and 2D...
Engineering the Statistics
Do you remember the probability course you took in undergrad? If you were like me, you would consider it one of those courses that you get out of confused. But maybe a time will come where you regret skipping class because of the lecturer's persisting attempts to scare you with mathematical involved nomenclature.As you might have guessed, I had this moment few months back where I had to go deep into statistical analysis. I learned things the hard way, or maybe it is the right way. I mean...
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.
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 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...
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...
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...
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...
TI DSP Predictions
I think it might be interesting to blog a couple of "Texas Instruments DSP predictions". The following are just my opinion, they do not result in any way from inside / confidential information to which I'm privy in working closely with TI for many years. Of course I could be dead wrong, but at least I can say, "if they should occur, it would have a huge impact on the TI DSP developer community".
1) TI will offer real-time Linux running on their DSPs.
With Linux legal...
Update to a Narrow Bandpass Filter in Octave or Matlab
Following my earlier blog post (June 2020) featuring a Narrow Bandpass Filter, I’ve had some useful feedback and suggestions. This has inspired me to come up with an updated version, incorporating the following changes compared to the earlier one :
- Simpler code in Octave or Matlab
- Float32 precision replaces float64
- Faster processing by a factor of at least 4 times
- Easier setup of input parameters
- Normalized signal output level
A new experimental version in...
Engineering the Statistics
Do you remember the probability course you took in undergrad? If you were like me, you would consider it one of those courses that you get out of confused. But maybe a time will come where you regret skipping class because of the lecturer's persisting attempts to scare you with mathematical involved nomenclature.As you might have guessed, I had this moment few months back where I had to go deep into statistical analysis. I learned things the hard way, or maybe it is the right way. I mean...
Project update-2 : Digital Filter Blocks in MyHDL and their integration in pyFDA
This is an exciting update in the sense that it demonstrates a working model of one important aspect of the project: The integration or ‘glue’ between and Pyfda and MyHDL filter blocks.
So, why do we need to integrate and how do we go about it?
As discussed in earlier posts, the idea is to provide a workflow in Pyfda that automates the process of Implementing a fixpoint filter in VHDL / Verilog, and verify the correct performance in a digital design environment. MyHDL based...


























