
Download and install code blocks as your C integrated development environment, verify the GNU GCC compiler is detected, and you may use another C IDE or compiler if already available.
Explore a quick overview of CodeBlocks, create a new C console project, and set a dedicated folder. Build and run to test installation by seeing Hello World and Hello DSP.
Plot signals with gnuplot from dot dat files exported by your C code, and set the data folder to plot accurately, including signals with lines and multiple signals.
Define signal as a relationship between parameters and distinguish continuous from discrete signals. Explain ADC digitization, independent and dependent variables, and how samples form the digitized signal.
Compute the signal mean by averaging all samples. Understand the standard deviation as the measure of fluctuation from the mean, with variance representing the power of that fluctuation.
Develop a variance algorithm for a signal in c by computing the mean, summing squared deviations with pow, and dividing by length. The lesson covers project setup and debugging.
Develop the standard deviation algorithm by implementing a double function that takes signal variance and returns the standard deviation via its square root in the signal variants project in C.
Define convolution as a math operation that combines an input signal and an impulse response to yield output. Represent impulse responses as shifted and scaled delta functions, i.e., the filter kernel or PSF.
Explore the convolution operation, using a low pass filter example, by combining an input signal with an impulse response to produce an output, illustrating length and the commutative property.
Explore how the impulse response defines a linear system and guides digital low-pass filter design, with the delta function as the convolution identity enabling amplification, attenuation, and delays.
Develop a convolution algorithm by applying a 29-element impulse response to an input signal, producing a low-pass output that preserves 1 kHz and attenuates 15 kHz.
Develop the convolution algorithm (part iv) to apply an impulse response to an input signal and produce a filtered output. Implement a low-pass filter with arrays and simple plotting.
Develop and implement a discrete Fourier transform algorithm in C, building a console project from scratch, initialize inputs, and compute real and imaginary frequency components.
Develops the DFT algorithm by guiding you through plotting input signals, setting origins and colors, and comparing time-domain and frequency-domain representations in a C DSP project.
Develop and validate the inverse DFT algorithm by plotting time-domain inputs and frequency-domain real and imaginary parts, then compare the IDFT output with the forward DFT results to verify consistency.
Represent linear systems using complex numbers, converting input signals and outputs between complex notation and rectangular form.
Learn how real DFT extends to complex numbers, decomposing a time-domain signal into cosine and sine components with amplitudes in X(K) and iX(K) via forward transform to the frequency domain.
Develops the complex discrete Fourier transform equation (part i) to handle time-domain signals with real and imaginary parts in C, extending the real-valued DFT in C.
With a programming based approach, this course is designed to give you a solid foundation in the most useful aspects of Digital Signal Processing (DSP) in an engaging and easy to follow way. The goal of this course is to present practical techniques while avoiding obstacles of abstract mathematical theories. To achieve this goal, the DSP techniques are explained in plain language, not simply proven to be true through mathematical derivations.
Still keeping it simple, this course comes in different programming languages and hardware architectures so that students can put the techniques to practice using a programming language or hardware architecture of their choice. This version of the course uses the C programming language.
By the end of this course you should be able develop the Convolution Kernel algorithm in C, develop the Discrete Fourier Transform (DFT) algorithm in C, develop the Inverse Discrete Fourier Transform (IDFT) algorithm in C, design and develop Finite Impulse Response (FIR) filters in C, design and develop Infinite Impulse Response (IIR) filters in C, develop Windowed-Sinc filters in C, build Modified Sallen-Key filters, build Bessel, Chebyshev and Butterworth filters, develop the Fast Fourier Transform (FFT) algorithm in C , even give a lecture on DSP and so much more. Please take a look at the full course curriculum.