Skip to main content

MATLAB Code for Pulse Position Modulation (PPM) and Demodulation

 

MATLAB Code

% Set parameters
fs = 1000; % Sampling rate in Hz
t = 0:1/fs:1; % Time vector spanning 1 second
analogSignal = (sin(2 * pi * 2 * t) + 1) / 2; % Generate a 2 Hz sine wave, scaled to [0,1]

samplesPerPulse = 100; % Define number of samples per pulse
ppmWidthFraction = 0.1; % Fraction of samplesPerPulse used for pulse width

% Perform PPM modulation
[ppmSignal, ppmPulseTrain] = ppmModulate(analogSignal, samplesPerPulse, ppmWidthFraction);

% Perform PPM demodulation
demodulatedSignal = ppmDemodulate(ppmSignal, samplesPerPulse);

% Display the demodulated signal values
disp('Demodulated Signal:');
disp(demodulatedSignal);

% Plot results
figure;

% Plot original analog signal
subplot(3, 1, 1);
plot(t, analogSignal, 'b');
title('Original 2 Hz Sine Wave');
xlabel('Time (s)');
ylabel('Amplitude');

% Plot modulated PPM signal
subplot(3, 1, 2);
stem(ppmSignal(1:1000), 'filled');
title('Pulse Position Modulated (PPM) Signal');
xlabel('Sample Index');
ylabel('Amplitude');

% Plot demodulated signal
subplot(3, 1, 3);
samples = 1:1000;
plot(samples / 1000, demodulatedSignal(1:1000), 'r');
title('Recovered Demodulated Signal');
xlabel('Sample Index (x10^3)');
ylabel('Normalized Pulse Position');

% Function for PPM Modulation
function [ppmSignal, ppmPulseTrain] = ppmModulate(analogSignal, samplesPerPulse, ppmWidthFraction)
pulseWidth = round(ppmWidthFraction * samplesPerPulse); % Compute pulse width
ppmSignal = zeros(1, length(analogSignal) * samplesPerPulse); % Initialize PPM signal
ppmPulseTrain = zeros(1, length(analogSignal) * samplesPerPulse); % Initialize pulse train

for i = 1:length(analogSignal)
% Calculate the pulse's starting position within the symbol period
pulsePosition = round(analogSignal(i) * (samplesPerPulse - pulseWidth));

% Determine the start and end indices of the pulse
startIndex = (i - 1) * samplesPerPulse + pulsePosition + 1;
endIndex = min(startIndex + pulseWidth - 1, i * samplesPerPulse);

% Assign pulse in the PPM signal and pulse train
ppmSignal(startIndex:endIndex) = 1;
ppmPulseTrain(startIndex:endIndex) = 1;
end
end

% Function for PPM Demodulation
function demodulatedSignal = ppmDemodulate(ppmSignal, samplesPerPulse)
numSymbols = length(ppmSignal) / samplesPerPulse; % Determine number of symbols
demodulatedSignal = zeros(1, numSymbols); % Initialize demodulated signal

for i = 1:numSymbols
startIndex = (i - 1) * samplesPerPulse + 1;
endIndex = i * samplesPerPulse;
segment = ppmSignal(startIndex:endIndex);

% Locate the first occurrence of the pulse
pulsePosition = find(segment == 1, 1);

if ~isempty(pulsePosition)
% Normalize the pulse position to a range of [0,1]
demodulatedSignal(i) = (pulsePosition - 1) / samplesPerPulse;
else
demodulatedSignal(i) = 0; % Assign zero if no pulse is detected
end
end
end

Output


 

 

 

 

 

 

Copy the code from here

 

Further Reading 


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

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

๐Ÿ“˜ Overview of BER and SNR ๐Ÿงฎ Simulator for m-ary QAM and m-ary PSK ๐Ÿงฎ MATLAB Codes ๐Ÿ“š 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)  On the other hand, SNR refers to the signal-to-noise power ratio. For ease of calculation, we commonly convert it to dB or decibels.   What is Signal the signal-to-noise ratio (SNR)? SNR = signal power/noise power (SNR is a ratio of signal power to noise power) SNR (in dB) = 10*log(signal power / noise power) [base 10] For instance,...

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 ...

MATLAB Code for Pulse Amplitude Modulation (PAM) and Demodulation

๐Ÿ“˜ Overview & Theory ๐Ÿงฎ MATLAB Code 1 ๐Ÿงฎ MATLAB Code 2 ๐Ÿงฎ MATLAB Code for Pulse Amplitude Modulation and Demodulation of Digital data ๐Ÿงฎ Other Pulse Modulation Techniques (e.g., PWM, PPM, DM, and PCM) ๐Ÿ“š Further Reading   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('Amplitu...

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...

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

๐Ÿ“˜ Overview ๐Ÿงฎ Simulator ๐Ÿงฎ Noise Sensitivity, Bandwidth, Complexity, etc. ๐Ÿงฎ MATLAB Codes ๐Ÿงฎ 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 Rate or Bit Rate (bps): Frequency Deviation (Hz) for FSK: Calculate Bandwidth Comparison among ASK,  FSK, and PSK Performance Comparison: 1. Noise Sensitivity:    - ASK is the most sensitive to noise due to its r...

Theoretical vs. simulated BER vs. SNR for ASK, FSK, and PSK

๐Ÿ“˜ Overview ๐Ÿงฎ Simulator for calculating BER ๐Ÿงฎ MATLAB Codes for calculating theoretical BER ๐Ÿงฎ MATLAB Codes for calculating simulated BER ๐Ÿ“š Further Reading   BER vs. SNR denotes how many bits in error are received in a communication process for a particular Signal-to-noise (SNR) ratio. In most cases, SNR is measured in decibel (dB). For a typical communication system, a signal is often affected by two types of noises 1. Additive White Gaussian Noise (AWGN) 2. Rayleigh Fading In the case of additive white Gaussian noise (AWGN), random magnitude is added to the transmitted signal. On the other hand, Rayleigh fading (due to multipath) attenuates the different frequency components of a signal differently. A good signal-to-noise ratio tries to mitigate the effect of noise.  Simulator for calculating BER vs SNR for binary ASK, FSK, and PSK Calculate BER for Binary ASK Modulation The theoretical BER for binary ASK (BASK) in an AWGN channel is...

MATLAB code for BER vs SNR for M-QAM, M-PSK, QPSk, BPSK, ...

๐Ÿ“˜ Overview ๐Ÿงฎ Simulator for m-ary QAM and m-ary PSK ๐Ÿงฎ MATLAB Code for BPSK, M-ary PSK, and M-ary QAM Together ๐Ÿงฎ MATLAB Code for M-ary QAM ๐Ÿงฎ MATLAB Code for M-ary PSK ๐Ÿ“š Further Reading   MATLAB Script for  BER vs. SNR for M-QAM, M-PSK, QPSk, BPSK %Written by Salim Wireless %Visit www.salimwireless.com for study materials on wireless communication %or, if you want to learn how to code in MATLAB clc; clear; close all; % Parameters num_symbols = 1e5; % Number of symbols snr_db = -20:2:20; % Range of SNR values in dB % PSK and QAM orders to be tested psk_orders = [2, 4, 8, 16, 32]; qam_orders = [4, 16, 64, 256]; % Initialize BER arrays ber_psk_results = zeros(length(psk_orders), length(snr_db)); ber_qam_results = zeros(length(qam_orders), length(snr_db)); % BER calculation for each PSK order and SNR value for i = 1:length(psk_orders) psk_order = psk_orders(i); for j = 1:length(snr_db) % Generate random symbols ...