Skip to main content

MATLAB Code for Pulse Amplitude Modulation (PAM) and Demodulation


 

Pulse Amplitude Modulation (PAM) & Demodulation

MATLAB Script

clc;

clear all;

close all;

fm= 10; % frequency of the message signal

fc= 100; % frequency of the carrier signal

fs=1000*fm; % (=100KHz) sampling frequency (where 1000 is the upsampling factor)

t=0:1/fs:1; % sampling rate of (1/fs = 100 kHz)

m=1*cos(2*pi*fm*t); % Message signal with period 2*pi*fm (sinusoidal wave signal)

c=0.5*square(2*pi*fc*t)+0.5; % square wave with period 2*pi*fc

s=m.*c; % modulated signal (multiplication of element by element)

subplot(4,1,1);

plot(t,m);

title('Message signal');

xlabel ('Time');

ylabel('Amplitude');

subplot(4,1,2);

plot(t,c);

title('Carrier signal');

xlabel('Time');

ylabel('Amplitude');

subplot(4,1,3);

plot(t,s);

title('Modulated signal');

xlabel('Time');

ylabel('Amplitude');

%demdulated

d=s.*c; % At receiver, received signal is multiplied by carrier signal

filter=fir1(200,fm/fs,'low'); % low-pass FIR filter which order is 200

% here fm is the cut-off frequency and the fs is the sampling frequency

original_t_signal=conv(filter,d); % convolution of demodulated signal with filter %coefficient

t1=0:1/(length(original_t_signal)-1):1;

subplot(4,1,4);

plot(t1,original_t_signal);

title('demodulated signal');

xlabel('time');

ylabel('amplitude');

web('https://www.salimwireless.com/search?q=pulse%20amplitude%20modulation', '-browser');

 Output

 

Copy the code from here

 


Another Code for Pulse Amplitude Modulation

MATLAB Script

 clc;
clear;
close all;

% Parameters
messageFrequency = 2;   % Message frequency in Hz
carrierFrequency = 20;  % Carrier frequency in Hz
samplingFrequency = 1000; % Sampling frequency in Hz
duration = 1;           % Signal duration in seconds
A = 1;                  % Amplitude of the signals

% Time vector
t = 0:1/samplingFrequency:duration;

% Message signal (sinusoidal)
messageSignal = A * sin(2 * pi * messageFrequency * t);

% Carrier signal (square wave)
carrierSignal = A * square(2 * pi * carrierFrequency * t);

% PAM signal
pamSignal = messageSignal .* (carrierSignal > 0);

% Plotting
figure;
subplot(3,1,1);
plot(t, messageSignal);
title('Message Signal');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(3,1,2);
plot(t, carrierSignal);
title('Carrier Signal');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(3,1,3);
plot(t, pamSignal);
title('PAM Signal');
xlabel('Time (s)');
ylabel('Amplitude');
web('https://www.salimwireless.com/search?q=pulse%20amplitude%20modulation', '-browser');

Copy the Code from here

 

Pulse Amplitude Modulation (PAM) & Demodulation for Digital Data

% The code is written by SalimWireless.Com
clc;
clear;
close all;


% PAM Modulation and Demodulation Example


% Parameters
M = 8; % PAM order (8-PAM)
numSymbols = 100; % Number of symbols to transmit
Fs = 1000; % Sampling frequency
T = 1; % Symbol duration


% Generate random data
data = randi([0 M-1], 1, numSymbols); % Random data symbols


% PAM Modulation
% Map the data symbols to PAM levels
pamLevels = linspace(-M + 1, M - 1, M); % PAM levels
modulatedSignal = pamLevels(data + 1); % Map data to PAM levels


% Create a time vector
t = 0:1/Fs:T*numSymbols-1/Fs;


% Upsample and create PAM signal
upsampledSignal = zeros(1, length(t));
for i = 1:numSymbols
upsampledSignal((i-1)*Fs+1:i*Fs) = modulatedSignal(i);
end


% Add some noise
snr = 20; % Signal-to-noise ratio
noisySignal = awgn(upsampledSignal, snr, 'measured');


% PAM Demodulation
% Sample the noisy signal at symbol rate
receivedSymbols = noisySignal(1:Fs:end);


% Map received symbols to nearest PAM level
demodulatedData = zeros(1, numSymbols);
for i = 1:numSymbols
[~, demodulatedData(i)] = min(abs(receivedSymbols(i) - pamLevels));
end


% Plotting
figure;
subplot(4,1,1);
stem(data);
title('Original Data');
xlabel('Time (s)');
ylabel('Amplitude');


subplot(4,1,2);
plot(t, upsampledSignal);
title('Transmitted PAM Signal');
xlabel('Time (s)');
ylabel('Amplitude');


subplot(4,1,3);
plot(t, noisySignal);
title('Received Noisy PAM Signal');
xlabel('Time (s)');
ylabel('Amplitude');


subplot(4,1,4);
stem(demodulatedData);
title('Demodulated Data');
xlabel('Symbol Index');
ylabel('PAM Level');
grid on;


% Display results
disp('Original Data:');
disp(data);
disp('Demodulated Data:');
disp(demodulatedData);
web('https://www.salimwireless.com/search?q=pulse%20amplitude%20modulation', '-browser');

Output






Copy the MATLAB Code from here



Further Reading

  1. Pulse Amplitude Modulation and Demodulation theory
  2. Is PAM a Digital Modulation Technique ?
  3. Pulse Width Modulation (PWM) and Demodulation
  4. Pulse Position Modulation (PPM) and Demodulation
  5. Delta Modulation and demodulation
  6. Pulse Code Modulation (PCM)
  7. Quantization Signal to Noise Ration (Q-SNR)
  8. MATLAB Code for Pulse Width Modulation and Demodulation
  9. MATLAB Code for Pulse Position Modulation (PPM) and Demodulation
  10. MATLAB Code for Pulse Code Modulation (PCM) and demodulation

People are good at skipping over material they already know!

View Related Topics to







Admin & Author: Salim

s

  Website: www.salimwireless.com
  Interests: Signal Processing, Telecommunication, 5G Technology, Present & Future Wireless Technologies, Digital Signal Processing, Computer Networks, Millimeter Wave Band Channel, Web Development
  Seeking an opportunity in the Teaching or Electronics & Telecommunication domains.
  Possess M.Tech in Electronic Communication Systems.


Contact Us

Name

Email *

Message *

Popular Posts

UGC NET Electronic Science Previous Year Question Papers

Home / Engineering & Other Exams / UGC NET 2022: Previous Year Question Papers ...   NET | GATE | ESE | UGC-NET (Electronics Science, Subject code: 88 ) UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [December 2024] UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [June 2024] UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [December 2023] UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [June 2023] UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [December 2022]  UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [June 2022]   UGC Net Electronic Science Questions Paper With Answer Key Download Pdf [December 2021] UGC Net Electronic Science Questions With Answer Key Download Pdf [June 2020] UGC Net Electronic Science Questions With Answer Key Download Pdf [December 2019] UGC Net Electronic Science Questions With Answer...

Constellation Diagrams of ASK, PSK, and FSK

๐Ÿ“˜ Overview ๐Ÿงฎ Simulator for constellation diagrams of ASK, FSK, and PSK ๐Ÿงฎ Theory ๐Ÿงฎ MATLAB Codes ๐Ÿงฎ Simulator for constellation diagrams of m-ary PSK ๐Ÿงฎ Simulator for constellation diagrams of m-ary QAM ๐Ÿ“š Further Reading BASK (Binary ASK) Modulation: Transmits one of two signals: 0 or -√Eb, where Eb​ is the energy per bit. These signals represent binary 0 and 1.    BFSK (Binary FSK) Modulation: Transmits one of two signals: +√Eb​ ( On the y-axis, the phase shift of 90 degrees with respect to the x-axis, which is also termed phase offset ) or √Eb (on x-axis), where Eb​ is the energy per bit. These signals represent binary 0 and 1.  BPSK (Binary PSK) Modulation: Transmits one of two signals: +√Eb​ or -√Eb (they differ by 180 degree phase shift), where Eb​ is the energy per bit. These signals represent binary 0 and 1.    Simulator for BASK, BPSK, and BFSK Constellation Diagrams ...

BER vs SNR for M-ary QAM, M-ary PSK, QPSK, BPSK, ...

๐Ÿ“˜ Overview of BER and SNR ๐Ÿงฎ Simulator for BER calculation of m-ary QAM and m-ary PSK ๐Ÿงฎ Simulator for Constellation Diagram of m-ary QAM ๐Ÿงฎ Simulator for Constellation Diagram of m-ary PSK ๐Ÿงฎ MATLAB Code for BER calculation of M-ary QAM, M-ary PSK, QPSK, BPSK, ... ๐Ÿงฎ MATLAB Code for BER calculation of ASK, FSK, and PSK ๐Ÿงฎ MATLAB Code for BER calculation of Alamouti Scheme ๐Ÿงฎ Different approaches to calculate BER vs SNR ๐Ÿ“š Further Reading Modulation Constellation Diagrams BER vs. SNR BER vs SNR for M-QAM, M-PSK, QPSk, BPSK, ... What is Bit Error Rate (BER)? The abbreviation BER stands for bit error rate, which indicates how many corrupted bits are received (after the demodulation process) compared to the total number of bits sent in a communication process. It is defined as,  In mathematics, BER = (number of bits received in error / total number of transmitted bits)...

Comparisons among ASK, PSK, and FSK | And the definitions of each

https://www.salimwireless.com/2024/11/constellation-diagram-in-matlab.html ๐Ÿ“˜ Overview ๐Ÿงฎ Simulator ๐Ÿงฎ Noise Sensitivity, Bandwidth, Complexity, etc. ๐Ÿงฎ MATLAB Code for BER vs. SNR Analysis of ASK, FSK, and PSK ๐Ÿงฎ MATLAB Code for Constellation Diagrams of ASK, FSK, and PSK ๐Ÿงฎ Simulator for ASK, FSK, and PSK Generation ๐Ÿงฎ Simulator for ASK, FSK, and PSK Constellation ๐Ÿงฎ Some Questions and Answers ๐Ÿ“š Further Reading Modulation ASK, FSK & PSK Constellation MATLAB Simulink MATLAB Code Comparisons among ASK, PSK, and FSK    Comparisons among ASK, PSK, and FSK   Simulator for Calculating Bandwidth of ASK, FSK, and PSK The baud rate represents the number of symbols transmitted per second. Both baud rate and bit rate are same for binary ASK, FSK, and PSK. Select Modulation Type: ASK FSK PSK Baud Rat...

Channel Impulse Response (CIR)

Channel Impulse Response (CIR) ๐Ÿ“˜ Overview & Theory ๐Ÿ“˜ How does the channel impulse response affect the signal? ๐Ÿงฎ MATLAB Codes ๐Ÿ“š Further Reading Wireless Signal Processing CIR, Doppler Shift & Gaussian Random Variable  The Channel Impulse Response (CIR) is a concept primarily used in the field of telecommunications and signal processing. It provides information about how a communication channel responds to an impulse signal.   What is the Channel Impulse Response (CIR) ? It describes the behavior of a communication channel in response to an impulse signal. In signal processing,  an impulse signal has zero amplitude at all other times and amplitude  ∞ at time 0 for the signal. Using a Dirac Delta function, we can approximate this.  ...(i) ฮด( t) now has a very intriguing characteristic. The answer is 1 when the Fourier Transform of  ฮด( t) is calculated. As a result, all frequencies ar...

Alamouti Scheme for 2x2 MIMO in MATLAB

๐Ÿ“˜ Overview & Theory ๐Ÿงฎ MATLAB Code for Alamouti Scheme ๐Ÿงฎ MATLAB Code for BER vs. SNR for Alamouti Scheme ๐Ÿงฎ Alamouti Scheme Transmission Table ๐Ÿ“š Further Reading    Read about the Alamouti Scheme first MATLAB Code for Alamouti's Precoding Matrix for 2 X 2 MIMO % Clear any existing data and figures clc; clear; close all; % Define system parameters transmitAntennas = 2; % Number of antennas at the transmitter receiveAntennas = 2; % Number of antennas at the receiver symbolCount = 1000000; % Number of symbols to transmit SNR_dB = 15; % Signal-to-Noise Ratio in decibels % Generate random binary data for transmission rng(10); % Set seed for reproducibility transmitData = randi([0, 1], transmitAntennas, symbolCount); % Perform Binary Phase Shift Keying (BPSK) modulation modulatedSymbols = 1 - 2 * transmitData; % Define Alamouti's Precoding Matrix precodingMatrix = [1 1; -1i 1i]; % Encode and transmit data using Alamouti scheme transmittedSym...

OFDM for 4G & 5G

๐Ÿ“˜ Overview ๐Ÿ“˜ Example: (OFDM using QPSK) ๐Ÿงฎ MATLAB Codes ๐Ÿ“š Further Reading   Orthogonal Frequency Division Multiplexing When a signal with high bandwidth traverses through a medium, it tends to disperse more compared to a signal with lower bandwidth. A high-bandwidth signal comprises a wide range of frequency components. Each frequency component may interact differently with the transmission medium due to factors such as attenuation, dispersion, and distortion. OFDM combats the high-bandwidth frequency selective channel by dividing the original signal into multiple orthogonal multiplexed narrowband signals. In this way it, overcomes the inter-symbol interferences (ISI) issue. Block Diagram     ‘k’ indicates kth position in a input symbol N is the number of subcarriers   Example: (OFDM using QPSK) 1.        Input Parameters: N   Number of Input bits: 128 Number of subcarriers (FFT length): 64 ...