Skip to main content

MATLAB: Sinusoids with Gaussian, Uniform, Laplace, Binary, and Pink Noise

 

MATAB Code

%% ==========================================================

%  WSS / Noise Demonstration Simulator

%  Sinusoid + Multiple Noise Types

%  Distribution + Autocorrelation + PSD

%  LTI System Demonstration

%% ==========================================================


clear;

close all;

clc;


%% Parameters

Fs = 1000;              % Sampling Frequency

N  = 5000;              % Number of Samples

t  = (0:N-1)/Fs;


A  = 1;                 % Sinusoid Amplitude

f0 = 20;                % Sinusoid Frequency


signal = A*sin(2*pi*f0*t);


noiseVariance = 0.25;

noiseStd = sqrt(noiseVariance);


%% ==========================================================

% Generate Noise Types

%% ==========================================================


% Gaussian Noise

gaussianNoise = noiseStd*randn(1,N);


% Uniform Noise (same variance)

uniformNoise = (rand(1,N)-0.5)*sqrt(12*noiseVariance);


% Laplace Noise

u = rand(1,N)-0.5;

b = sqrt(noiseVariance/2);

laplaceNoise = -b*sign(u).*log(1-2*abs(u));


% Binary Noise

binaryNoise = noiseStd*sign(rand(1,N)-0.5);


% Pink Noise (simple approximation)

whiteNoise = randn(1,N);

pinkNoise = filter(1,[1 -0.98],whiteNoise);

pinkNoise = pinkNoise/std(pinkNoise)*noiseStd;


%% ==========================================================

% Create Noisy Signals

%% ==========================================================


sigGaussian = signal + gaussianNoise;

sigUniform  = signal + uniformNoise;

sigLaplace  = signal + laplaceNoise;

sigBinary   = signal + binaryNoise;

sigPink     = signal + pinkNoise;


%% ==========================================================

% Figure 1 : Time Domain Signals

%% ==========================================================


figure('Name','Sinusoid with Different Noise Types',...

       'Position',[100 100 1200 800]);


subplot(3,2,1)

plot(t(1:1000),signal(1:1000),'k','LineWidth',1.5)

title('Pure Sinusoid')

xlabel('Time (s)')

ylabel('Amplitude')

grid on


subplot(3,2,2)

plot(t(1:1000),sigGaussian(1:1000))

title('Sinusoid + Gaussian Noise')

grid on


subplot(3,2,3)

plot(t(1:1000),sigUniform(1:1000))

title('Sinusoid + Uniform Noise')

grid on


subplot(3,2,4)

plot(t(1:1000),sigLaplace(1:1000))

title('Sinusoid + Laplace Noise')

grid on


subplot(3,2,5)

plot(t(1:1000),sigBinary(1:1000))

title('Sinusoid + Binary Noise')

grid on


subplot(3,2,6)

plot(t(1:1000),sigPink(1:1000))

title('Sinusoid + Pink Noise')

grid on


%% ==========================================================

% Figure 2 : Noise Histograms

%% ==========================================================


figure('Name','Noise Distributions',...

       'Position',[150 100 1200 800]);


subplot(3,2,1)

histogram(gaussianNoise,50,'Normalization','pdf')

title('Gaussian Distribution')

grid on


subplot(3,2,2)

histogram(uniformNoise,50,'Normalization','pdf')

title('Uniform Distribution')

grid on


subplot(3,2,3)

histogram(laplaceNoise,50,'Normalization','pdf')

title('Laplace Distribution')

grid on


subplot(3,2,4)

histogram(binaryNoise,50,'Normalization','pdf')

title('Binary Distribution')

grid on


subplot(3,2,5)

histogram(pinkNoise,50,'Normalization','pdf')

title('Pink Noise Distribution')

grid on


%% ==========================================================

% Figure 3 : Distribution Comparison

%% ==========================================================


figure('Name','Distribution Comparison');


hold on


[f,x] = ksdensity(gaussianNoise);

plot(x,f,'LineWidth',2)


[f,x] = ksdensity(uniformNoise);

plot(x,f,'LineWidth',2)


[f,x] = ksdensity(laplaceNoise);

plot(x,f,'LineWidth',2)


legend('Gaussian','Uniform','Laplace')

xlabel('Amplitude')

ylabel('Probability Density')

title('Noise Probability Density Functions')

grid on


%% ==========================================================

% Figure 4 : Autocorrelation

%% ==========================================================


figure('Name','Noise Autocorrelation',...

       'Position',[150 100 1200 800]);


subplot(3,2,1)

autocorr(gaussianNoise,100)

title('Gaussian')


subplot(3,2,2)

autocorr(uniformNoise,100)

title('Uniform')


subplot(3,2,3)

autocorr(laplaceNoise,100)

title('Laplace')


subplot(3,2,4)

autocorr(binaryNoise,100)

title('Binary')


subplot(3,2,5)

autocorr(pinkNoise,100)

title('Pink')


%% ==========================================================

% Figure 5 : Power Spectral Density

%% ==========================================================


figure('Name','Power Spectral Density',...

       'Position',[150 100 1200 800]);


subplot(3,2,1)

pwelch(gaussianNoise)

title('Gaussian PSD')


subplot(3,2,2)

pwelch(uniformNoise)

title('Uniform PSD')


subplot(3,2,3)

pwelch(laplaceNoise)

title('Laplace PSD')


subplot(3,2,4)

pwelch(binaryNoise)

title('Binary PSD')


subplot(3,2,5)

pwelch(pinkNoise)

title('Pink PSD')


%% ==========================================================

% Figure 6 : WSS Through LTI System

%% ==========================================================


h = [0.2 0.5 0.2];


x = gaussianNoise;

y = conv(x,h,'same');


figure('Name','WSS Through LTI');


subplot(2,2,1)

plot(x(1:500))

title('Input WSS Process')

grid on


subplot(2,2,2)

plot(y(1:500))

title('Output Process')

grid on


subplot(2,2,3)

[Rx,lags] = xcorr(x,100,'biased');

plot(lags,Rx,'LineWidth',1.5)

title('Input Autocorrelation')

xlabel('Lag')

grid on


subplot(2,2,4)

[Ry,lags] = xcorr(y,100,'biased');

plot(lags,Ry,'LineWidth',1.5)

title('Output Autocorrelation')

xlabel('Lag')

grid on


%% ==========================================================

% Figure 7 : WSS vs Non-WSS

%% ==========================================================


xWSS = randn(1,N);


xNonWSS = (1 + 0.002*(1:N)).*randn(1,N);


window = 200;


runningMeanWSS = movmean(xWSS,window);

runningMeanNonWSS = movmean(xNonWSS,window);


figure('Name','WSS vs Non-WSS');


subplot(2,1,1)

plot(runningMeanWSS,'LineWidth',1.5)

title('Running Mean of WSS Process')

ylabel('Mean')

grid on


subplot(2,1,2)

plot(runningMeanNonWSS,'r','LineWidth',1.5)

title('Running Mean of Non-WSS Process')

ylabel('Mean')

xlabel('Sample Index')

grid on


%% ==========================================================

% Figure 8 : Correlation Matrix Visualization

%% ==========================================================


[R,lags] = xcorr(x,50,'biased');


Rpositive = R(lags>=0);


figure('Name','Correlation Matrix');


imagesc(toeplitz(Rpositive))

colormap(jet)

colorbar


title('Autocorrelation Matrix of WSS Process')

xlabel('Sample Index')

ylabel('Sample Index')


%% ==========================================================

% Summary

%% ==========================================================


disp('========================================');

disp('Simulation Complete');

disp('Generated:');

disp('1. Noisy sinusoid signals');

disp('2. Noise distributions');

disp('3. PDF comparison');

disp('4. Autocorrelation plots');

disp('5. Power spectral densities');

disp('6. WSS -> LTI -> WSS demonstration');

disp('7. WSS vs Non-WSS comparison');

disp('8. Correlation matrix visualization');

disp('========================================');


Output














Contact Us

Name

Email *

Message *

Popular Posts

UGC NET Electronic Science Previous Year Question Papers with Solutions

Download Papers and Solutions Exam Pattern Preparation Tips FAQs More Home / Engineering & Other Exams / UGC NET 2026 PYQ 📊 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 2026 - Question Paper Download PDF June 202...

MATLAB Code for Constellation Diagram of QAM configurations such as 4, 8, 16, 32, 64, 128, and 256-QAM

📘 Overview of QAM 🧮 4-QAM MATLAB 🧮 16-QAM MATLAB 🚀 Online Simulator 📂 Other Topics on Constellation Diagrams... ▼ 🧮 MATLAB Code for 4-QAM 🧮 MATLAB Code for 16-QAM 🧮 MATLAB Code for m-ary QAM 🧮 Simulator for m-ary PSK 🧮 Simulator for m-ary QAM 🧮 Overview of Energy per Bit (Eb / N0) 🧮 Simulator for ASK, FSK, and PSK Overview of QAM One of the best-performing modulation techniques is QAM [↗] . Here, we modulate the symbols by varying the carrier signal's amplitude and phase in response to the variation in the message signal (or voltage variation). So, we may say that QAM is a combination of phase and amplitude modulation. Additionally, it performs better than ASK or PSK [↗] . In fact, any constellation for any type of modulatio...

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 Flat Fading and Frequency-Selective Fading Effects of Multipath Components and the Nakagami-m Parameter 1. Flat Fading Flat fading occurs when the signal bandwidth is smaller than the channel's coherence bandwidth, meaning that all frequency components of the transmitted signal experience approximately the same fading. It is typically associated with narrowband signals, where the multipath delay spread is small relative to the symbol duration. ...

Coherent vs. Non-Coherent Demodulation

  For demodulation In general: 1. Synchronous (coherent) demodulation Receiver generates a local carrier/oscillator . It combines/multiplies the received signal with that carrier. Then a filter extracts the message. Received signal ↓ × Local oscillator ↓ Low-pass filter ↓ Message So yes, carrier multiplication is a common implementation of synchronous demodulation . 2. Asynchronous (non-coherent) demodulation Receiver doesn't need a phase-synchronized local carrier . It uses properties of the received signal itself to recover the information. For ASK , an envelope detector is the classic example: ASK signal ↓ Diode + RC ↓ Envelope ↓ Comparator ↓ Data Modulation Synchronous demodulation Non-coherent/asynchronous demodulation ASK/OOK Local carrier + multiplier Envelope detector AM Product detector Envelope detector FSK Coherent correlator/mixer Frequency discriminator, filters, etc. PSK Local synchronized carrier + multiplier Differential/n...

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 Simulator 🧮 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 dat...

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

Design of CMOS XOR/XNOR Gates

Design of CMOS XOR/XNOR Gates The semiconductor industry has experienced rapid integration of multimedia applications into mobile electronics, leading to very high integration density in CMOS VLSI. As operating frequencies increase, power consumption, speed, silicon area, and reliability become critical considerations. The XOR-XNOR circuits are fundamental building blocks in arithmetic circuits (Full Adders, Multipliers), compressors, comparators, parity checkers, code converters, error-detecting/correcting codes, and phase detectors. Their performance directly impacts the complex circuits they are used in. Design goals include full output voltage swing, low power consumption, reduced transistor count, minimal delay, and simultaneous non-skewed outputs. Static Logic (Static CMOS) Stat...

UGC NET Electronic Science June 2026 Question Paper with Answer Key & Detailed Solutions

Home / UGC NET PYQ / June 2026 Solved UGC NET Electronic Science June 2026 Question Paper with Answer Key and Full Explanations 📥 Download Question Paper (PDF) 2025 2024 2023 2022 2021 2020 Explanations 1. Answer: Option (3) Total Students = 900 Urban Students = 7/10*400 + 4/5*500 = 680 680/900 * 100 = 75.56% 2. Answer: Option (1) Urban Students = 7/10*400 + 4/5*500 + 4/7*700 + 1/2 * 600 = 1380 3. Answer: Option (3) Male = 700*4/7 = 400 Female = 700*3/7=300 400-300=100 100/400*100 = 25% 4. Answer: Option (2) 400*3/10*40/100 + 500*1/5*60/100+700*3/7*50/100+600*1/3*30/100 = 318 5. Answer: Option (2) Total Female Students in B,C, and D colleges = 600 Female Post-graduates  = 100*60/100 + 300*50/100 + 200*30/100 = 270 270/600 *100 = 45% 6. Answer: Option (3) 7. Answer: Option (2) 8. Answer: Option (4) 9. Answer: Option (4) 10. Answer: Option (2) 11. Answer: Option (2) 12. Answer...