Skip to main content

Discrete Wavelet Transform (DWT) in MATLAB

 

MATLAB Code 

% MATLAB Code to Demonstrate Discrete Wavelet Transform (DWT) and Spectrum Visualization

% Sampling frequency and time vector
Fs = 1000; % Sampling frequency (Hz)
t = 0:1/Fs:1-1/Fs; % Time vector (1 second duration)

% Frequencies of the sinusoids (in Hz)
f1 = 50; % Frequency of first sinusoid
f2 = 150; % Frequency of second sinusoid
f3 = 300; % Frequency of third sinusoid

% Create a mixture of sinusoids
x = sin(2*pi*f1*t) + 0.5*sin(2*pi*f2*t) + 0.2*sin(2*pi*f3*t);

% Plot the original signal (Mixture of Sinusoids)
figure;
subplot(5,1,1);
plot(t, x);
title('Original Signal: Mixture of Sinusoids');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;

% Define low-pass (scaling) and high-pass (wavelet) filters
h = [1/2, 1/2]; % Low-pass filter (scaling function)
g = [1/2, -1/2]; % High-pass filter (wavelet function)

% First Level Filtering
% Convolve with the low-pass filter (approximation)
A1 = conv(x, h, 'valid'); % Approximation (low frequency)
% Convolve with the high-pass filter (detail)
D1 = conv(x, g, 'valid'); % Detail (high frequency)

% Downsample by a factor of 2
A1 = A1(1:2:end); % Downsample approximation
D1 = D1(1:2:end); % Downsample detail

% New sampling frequency after decimation (downsampling by a factor of 2)
Fs1 = Fs / 2;

% Plot the first level approximation and detail
subplot(5,1,2);
stem([A1, D1], 'filled');
title('First Level Decomposition (Approximation and Detail)');
xlabel('Index');
ylabel('Amplitude');
legend('Approximation', 'Detail');
grid on;

% Calculate and Plot Spectrum for First Level (A1 and D1) using pwelch
subplot(5,1,3);
[pxx_A1, f_A1] = pwelch(A1, [], [], [], Fs1);
[pxx_D1, f_D1] = pwelch(D1, [], [], [], Fs1);
plot(f_A1, 10*log10(pxx_A1), 'b', 'LineWidth', 1.5); hold on;
plot(f_D1, 10*log10(pxx_D1), 'r', 'LineWidth', 1.5);
title('Power Spectral Density (PSD) for First Level Approximation and Detail');
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
legend('Approximation', 'Detail');
grid on;

% Second Level Filtering (Decompose approximation further)
% Convolve approximation A1 with low-pass and high-pass filters
A2 = conv(A1, h, 'valid'); % Approximation (low frequency)
D2 = conv(A1, g, 'valid'); % Detail (high frequency)

% Downsample by a factor of 2
A2 = A2(1:2:end); % Downsample approximation
D2 = D2(1:2:end); % Downsample detail

% New sampling frequency after second decimation
Fs2 = Fs1 / 2;

% Plot the second level approximation and detail
subplot(5,1,4);
stem([A2, D2], 'filled');
title('Second Level Decomposition (Approximation and Detail)');
xlabel('Index');
ylabel('Amplitude');
legend('Approximation', 'Detail');
grid on;

% Calculate and Plot Spectrum for Second Level (A2 and D2) using pwelch
subplot(5,1,5);
[pxx_A2, f_A2] = pwelch(A2, [], [], [], Fs2);
[pxx_D2, f_D2] = pwelch(D2, [], [], [], Fs2);
plot(f_A2, 10*log10(pxx_A2), 'b', 'LineWidth', 1.5); hold on;
plot(f_D2, 10*log10(pxx_D2), 'r', 'LineWidth', 1.5);
title('Power Spectral Density (PSD) for Second Level Approximation and Detail');
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
legend('Approximation', 'Detail');
grid on;

% Display final message
disp('DWT completed with 2-level decomposition and Spectrum Visualization.');



Output


 

 

Further Reading

  1.  


Contact Us

Name

Email *

Message *

Popular Posts

LDPC Encoding and Decoding Techniques

Low Density Parity Check (LDPC) Guide Comprehensive analysis of linear error-correcting block codes, Tanner graphs, and 5G-NR implementations. 📘 Overview 🧮 Encoding 🧩 Decoding 📚 Resources Theory Encoding Tech Tanner Graph 5G Encoding Decoding 'LDPC' is the abbreviation for 'low density parity check'. LDPC code H matrix contains very few amount of 1's and mostly zeroes. LDPC codes are error correcting code. Using LDPC codes, channel capacities that are close to the theoretical Shannon limit can be achieved. Low density parity check (LDPC) codes are linear error-correcting block code suitable for error correction in a large block sizes transmi...

Flat vs Frequency Selective Online Simulator

Flat vs Frequency Selective Online Simulator Channel Type Without Fading Flat Fading Multipaths Nakagami m SNR(dB) Run Simulation Input Signal Signal After Fading Constellation Diagram BER vs SNR Explore Advanced Flat vs Frequency-Selective Fading Simulator Want to see these equations in action? Visualize it. Launch Simulator Tool Interactive Rayleigh Fading Simulator Want to see Rayleigh fading in action? Visualize it. Launch Simulator Tool Return to DSP Simulations Main Page →

Q-function in BER vs SNR Calculation (with Simulation)

Q-function in BER vs. SNR Calculation In digital communications and signal processing, the Q-function plays a significant role in predicting system reliability. It allows engineers to quantify the probability that Gaussian noise will exceed a specific threshold, causing a bit error. What is the Q-function? The Q-function is a mathematical function representing the tail probability of the standard normal (Gaussian) distribution. It is the complementary cumulative distribution function (CCDF) of a standard Gaussian distribution. Q(x) = (1 / √(2Ī€)) ∫ₓ∞ e^(-t² / 2) dt The Role of the Q-function in BER vs. SNR The Q-function is the standard tool for calculating BER in systems like BPSK or QPSK over AWGN (Additive White Gaussian Noise) channels. For BPSK: In BPSK, we transmit +√E b (bit 1) and -√E b (bit 0). The decision boundary is set at 0 . If -√E b was sent, an error occurs if noise r > √...

Design of CMOS Flip-Flops (SR, D, JK)

Design of CMOS Flip-Flops (SR, D, JK) A flip-flop or latch is a circuit with two stable states, used to store state information. It is the basic storage element in sequential logic and a fundamental building block in digital electronics systems, including computers and communication devices. Flip-flops and latches act as data storage elements for states, pulse counting, and synchronization of variably-timed input signals to a reference clock. Flip-flops can be transparent/opaque (latches) or clocked (synchronous, edge-triggered). Latches are level-sensitive, while flip-flops are edge-sensitive. In sequential logic, the output depends on current inputs and previous states. Fig.1 shows a sequential circuit combining a combinational block and a memory element. ...

Online Simulator for ASK, FSK, and PSK Signal Generation

Interactive Digital Signal Processing (DSP) Tutorial and Simulator for ASK, FSK, and BPSK modulation techniques. Try our new Digital Signal Processing Simulator!   •   Interactive ASK, FSK, and BPSK tools updated for 2025. Start Now Digital Modulation Visualizer: ASK, FSK, & BPSK Simulator Learn and visualize binary modulation techniques (ASK, FSK, BPSK) in real-time with adjustable carrier and sampling parameters. Perfect for DSP students and engineers. 📡 ASK Simulator đŸ“ļ FSK Simulator 🎚️ BPSK Simulator 📚 More Topics ASK Modulator FSK Modulator BPSK Modulator Demodulation More Topics 1. ASK (Ampli...

Gaussian minimum shift keying (GMSK)

📘 Overview & Theory 🧮 Simulator for GMSK 🧮 MSK and GMSK: Understanding the Relationship 🧮 MATLAB Code for GMSK 📚 Simulation Results for GMSK 📚 Q & A and Summary 📚 Further Reading Dive into the fascinating world of GMSK modulation, where continuous phase modulation and spectral efficiency come together for robust communication systems! Core Process of GMSK Modulation Phase Accumulation (Integration of Filtered Signal) After applying Gaussian filtering to the Non-Return-to-Zero (NRZ) signal, we integrate the smoothed signal to produce a continuous phase signal. For GMSK, the modulation index is $h=0.5$, meaning a bit '1' results in a phase shift of $\pi/2$: θ(t) = 2Ī€h ∫ 0 t m filtered (Ī„) dĪ„ This integration is crucial for avoiding abrupt phase transitions, ensuring smooth and continuous phase changes. Phase Mo...

OFDM Symbols and Subcarriers Explained

This article explains how OFDM (Orthogonal Frequency Division Multiplexing) symbols and subcarriers work. It covers modulation, mapping symbols to subcarriers, subcarrier frequency spacing, IFFT synthesis, cyclic prefix, and transmission. Step 1: Modulation First, modulate the input bitstream. For example, with 16-QAM , each group of 4 bits maps to one QAM symbol. Suppose we generate a sequence of QAM symbols: s0, s1, s2, s3, s4, s5, …, s63 Step 2: Mapping Symbols to Subcarriers Assume N sub = 8 subcarriers. Each OFDM symbol in the frequency domain contains 8 QAM symbols (one per subcarrier): Mapping (example) OFDM symbol 1 → s0, s1, s2, s3, s4, s5, s6, s7 OFDM symbol 2 → s8, s9, s10, s11, s12, s13, s14, s15 … OFDM sym...