Skip to main content

Robust Signal Detection with Prefix and Postfix in MATLAB

 

MATLAB Code

clc;
clear;
close all;

% Parameters
fs = 1000; % Sampling frequency
msgLength = 100; % Length of the message
pnLength = 50; % Length of PN sequence
silenceLength = 20; % Length of silence before and after
lagAmount = 50; % Amount of lag (can be negative for lead)
threshold = 0.5; % Threshold for correlation peak detection

% Generate Unique PN Sequences
pnPrefix = 2 * (randi([0, 1], 1, pnLength) - 0.5);
pnPostfix = 2 * (randi([0, 1], 1, pnLength) - 0.5);

% Generate Message
originalMessage = (randi([0, 1], 1, msgLength));
message = 2*originalMessage - 1;

% Construct Dataframe
dataframe = [pnPrefix, message, pnPostfix];

% Introduce Lag or Lead
if lagAmount > 0
%laggedFrame = [zeros(1, lagAmount), dataframe(1:end - lagAmount)];
laggedFrame = [zeros(1, lagAmount), dataframe];
else
laggedFrame = [dataframe(-lagAmount + 1:end), zeros(1, -lagAmount)];
end

% Correlation with PN Sequences
corrPrefix = xcorr(laggedFrame, pnPrefix);
corrPostfix = xcorr(laggedFrame, pnPostfix);

% Normalize Correlation
corrPrefix = corrPrefix / max(corrPrefix);
corrPostfix = corrPostfix / max(corrPostfix);

% Adjust indices to align with laggedFrame
corrLen = length(laggedFrame);
prefixIndices = (1:length(corrPrefix)) - corrLen;
postfixIndices = (1:length(corrPostfix)) - corrLen;

% Detect Peaks in Correlation (Apply Threshold)
prefixPeaks = prefixIndices(corrPrefix > threshold);
postfixPeaks = postfixIndices(corrPostfix > threshold);

% Estimate Start and End of Message
if ~isempty(prefixPeaks)
startMessage = max(1, prefixPeaks(1) + length(pnPrefix));
else
startMessage = -1; % Detection failed
end

if ~isempty(postfixPeaks)
endMessage = min(length(laggedFrame), postfixPeaks(end) - length(pnPostfix) - 1);
else
endMessage = -1; % Detection failed
end

% Retrieve Original Message
if startMessage > 0 && endMessage > 0 && endMessage > startMessage
retrievedMessage = laggedFrame(startMessage+1:endMessage+pnLength+1)>0;
else
retrievedMessage = [];
end

% Display Original Message
disp('Original Message:'), disp(originalMessage);

% Display Results
disp('Retrieved Message:'), disp(retrievedMessage);

% Plot Results
figure;
subplot(3, 1, 1); plot(dataframe); title('Original Dataframe');
subplot(3, 1, 2); plot(laggedFrame); title('Lagged/Lead Dataframe');
subplot(3, 1, 3); plot(corrPrefix, 'b'); hold on; plot(corrPostfix, 'r');
title('Correlation with PN Sequences');
legend('Prefix Correlation', 'Postfix Correlation');

 

Output 

 Original Message:

     1     0     0     0     1     1     0     1     1     0     0     0     0     1     0     0     1     1     0     1     1  ......
 
Retrieved Message:

    1     0     0     0     1     1     0     1     1     0     0     0     0     1     0     0     1     1     0     1     1  ......
 
 










Copy the aforementioned MATLAB Code from here

 

 

Further Reading

 



Contact Us

Name

Email *

Message *

Popular Posts

UGC NET Electronic Science Previous Year Question Papers with Solutions

Home / Engineering & Other Exams / UGC NET 2026 PYQ ⬇️ Download Papers and Solutions 📋 Exam Pattern 💡 Preparation Tips ❓ FAQs 📊 Exam Highlights: Electronic Science (88) Feature Details Junior Research Fellowship (JRF) ₹37,000 + HRA per month Eligibility M.Sc/M.Tech in Electronics (55%) Validity of Certificate JRF (3 Years) | Lectureship (Lifetime) 📥 Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading 📂 View All Question Papers June 2025 - Question Paper Download PDF June 2025 - Solved Paper + Explanation ...

MUSIC Algorithm Explained (with MATLAB + Simulator)

Practical Implementation of the MUSIC Algorithm The focus is on how the algorithm works computationally , not just theory, and it explains the denominator (a H E n E n H a) mathematically and intuitively. 1. Introduction The MUSIC (Multiple Signal Classification) algorithm is a high-resolution method used in signal processing and array processing to estimate the Direction of Arrival (DOA) of signals received by a sensor array. Unlike classical beamforming methods, MUSIC uses eigenvector decomposition of the covariance matrix to separate the signal subspace and noise subspace , allowing it to achieve much higher angular resolution. In practical implementations, MUSIC works by: Simulating or collecting array signals Computing the covariance matrix Performing eigenvalue decomposition Separating signal and noise subspaces Scanning possible angles using a steering vector Constructing a pseudo-spectrum where peaks indicate signal directions 2. Signal Mo...

PSD Calculation with FFT: MATLAB Tutorial for Signal Analysis

  Implementation Steps 1. FFT Computes the Frequency Content of a Signal FFT converts a time-domain signal to the frequency domain. If: The signal is sampled at rate $f_s$ You compute an $N_{\text{FFT}}$-point FFT Then each FFT bin corresponds to a frequency resolution of: $$\Delta f = \frac{f_s}{N_{\text{FFT}}}$$ So the FFT gives you accurate frequency content, assuming the signal is stationary and adequately sampled (Nyquist criterion met).  2. Magnitude Squared Gives Power (Not Amplitude) $$P[k] = |X[k]|^2$$ This gives power at each frequency bin, not just amplitude. It represents how much energy is present at each frequency. It's a key step for PSD.  3. Normalization Makes the PSD Physically Meaningful The equation: $$\text{PSD}[k] = \frac{|X[k]|^2}{N_{\text{FFT}} \cdot f_s \cdot U}$$ is derived from first principles and ensures that the u...

MATLAB code for BER vs SNR for M-QAM, M-PSK, QPSK, BPSK (with Simulation)

🧮 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 clc; clear; close all; snr_db = -5:2:25; psk_orders = [2, 4, 8, 16, 32]; qam_orders = [4, 16, 64, 256]; ber_psk_results = zeros(length(psk_orders), length(snr_db)); ber_qam_results = zeros(length(qam_orders), length(snr_db)); for i = 1:length(psk_orders) ber_psk_results(i, :) = berawgn(snr_db, 'psk', psk_orders(i), 'nondiff'); end for i = 1:length(qam_orders) ber_qam_results(i, :) = berawgn(snr_db, 'qam', qam_orders(i)); end figure; semilogy(snr_db, ber_psk_results(1, :), 'o-', 'LineWidth', 1.5, 'DisplayName', 'BPSK'); hold on; for i = 2:length(psk_orders) semilogy(snr_db, ber_psk_results(i, :), 'o-', 'DisplayName', sprintf('%d-PSK', psk_or...

MATLAB Code for ASK, FSK, and PSK (with Online Simulator)

MATLAB Code for ASK, FSK, and PSK Comprehensive implementation of digital modulation and demodulation techniques with simulation results. 📘 Theory 📡 ASK Code 📶 FSK Code 🎚️ PSK Code 🕹️ Simulator 📚 Further Reading Amplitude Shift Frequency Shift Phase Shift Live Simulator ASK, FSK & PSK HomePage MATLAB Code MATLAB Code for ASK Modulation and Demodulation COPY % The code is written by SalimWireless.Com clc; clear all; close all; % Parameters Tb = 1; fc = 10; N_bits = 10; Fs = 100 * fc; Ts = 1/Fs; samples_per_bit = Fs * Tb; rng(10); binar...

Theoretical BER vs SNR for BPSK

Theoretical Bit Error Rate (BER) vs Signal-to-Noise Ratio (SNR) for BPSK in AWGN Channel Let’s simplify the explanation for the theoretical Bit Error Rate (BER) versus Signal-to-Noise Ratio (SNR) for Binary Phase Shift Keying (BPSK) in an Additive White Gaussian Noise (AWGN) channel. Key Points Fig. 1: Constellation Diagrams of BASK, BFSK, and BPSK [↗] BPSK Modulation Transmits one of two signals: +√Eb or −√Eb , where Eb is the energy per bit. These signals represent binary 0 and 1 . AWGN Channel The channel adds Gaussian noise with zero mean and variance N₀/2 (where N₀ is the noise power spectral density). Receiver Decision The receiver decides if the received signal is closer to +√Eb (for bit 0) or −√Eb (for bit 1) . Bit Error Rat...

Constellation Diagrams of ASK, PSK, and FSK (with MATLAB Code + Simulator)

Constellation Diagrams: ASK, FSK, and PSK Comprehensive guide to signal space representation, including interactive simulators and MATLAB implementations. 📘 Overview 🧮 Simulator ⚖️ Theory 📈 Q-function 📚 Resources BASK Modulation Transmits one of two signals: 0 or $\sqrt{E_b}$, representing binary 0 and 1. Simple but sensitive to noise. BFSK Modulation Transmits one of two signals: $\sqrt{E_b}$ on the Y-axis or $\sqrt{E_b}$ on the X-axis. These are orthogonal signals. BPSK Modulation Transmits $+\sqrt{E_b}$ or $-\sqrt{E_b}$ (antipodal signaling). Most efficient binary scheme. ...