Skip to main content
Home Wireless Communication Modulation MATLAB Beamforming Project Ideas MIMO Filters Computer Networks

MATLAB Code for BER vs SNR for QAM


MATLAB Script

% This code is written by SalimWirelss.Com
clc;
clear all;
close all;

M = 4; % Number of levels after quantization / size of signal constellation
k = log2(M); % Number of bits per symbol
rng(1) % Assaining the value of seed integer
N = 1000000; % Number of bits to process

% Initialize SNR values and BER array
snr_dB = -20:1:20; % SNR values in dB
BER = zeros(size(snr_dB));

for snr_idx = 1:length(snr_dB)
snrdB = snr_dB(snr_idx);

InputBits = randi([0 1], 1, N); % Generating randon bits
InputSymbol_matrix = reshape(InputBits, length(InputBits)/k, k); % Reshape data into binary k-tuples, k = log2(M)
InputSymbols_decimal = bi2de(InputSymbol_matrix); % Convert binary to decimal

for n = 1:N/k
if InputSymbols_decimal(n) == 0
QAM(n) = complex(1,1);
elseif InputSymbols_decimal(n) == 1
QAM(n) = complex(-1,1);
elseif InputSymbols_decimal(n) == 2
QAM(n) = complex(1,-1);
else
QAM(n) = complex(-1,-1);
end
end

% Transmission of 4QAM data over AWGN channel
Y = awgn(QAM, snrdB); % Received signal

% Threshold Detection
for n = 1:N/k
if (real(Y(n)) > 0 && imag(Y(n)) > 0)
Z(n) = complex(1,1);
elseif (real(Y(n)) > 0 && imag(Y(n)) < 0)
Z(n) = complex(1,-1);
elseif (real(Y(n)) < 0 && imag(Y(n)) > 0)
Z(n) = complex(-1,1);
else
Z(n) = complex(-1,-1);
end
end

for n = 1:N/k
if Z(n) == complex(1,1)
output(n) = 0;
elseif Z(n) == complex(-1,1)
output(n) = 1;
elseif Z(n) == complex(1,-1)
output(n) = 2;
else
output(n) = 3;
end
end

% Decimal values of 4QAM constellation
% Convert decimal to binary symbols


% Reshape binary symbols into k-tuples
ReceivedBits = reshape(output, [], 2);
ReceivedSymbol_matrix = de2bi(ReceivedBits);
%ReceivedSymbol_matrix = InputSymbol_matrix;
A = ReceivedSymbol_matrix(:,1)';
B = ReceivedSymbol_matrix(:,2)';
ReceivedBits1 = [A B];
% Compute BER
BER(snr_idx) = sum(InputBits ~= ReceivedBits1) / N;
end

% Plot BER vs. SNR
figure;
semilogy(snr_dB, BER, 'o-');
grid on;
xlabel('SNR (dB)');
ylabel('Symbol Error Rate (BER)');
title('BER vs. SNR');

 Output

 

 
Fig 1: BER vs SNR graph for 4-QAM 



Copy the MATLAB Code from here

People are good at skipping over material they already know!

View Related Topics to







Admin & Author: Salim

profile

  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

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

Modulation ASK, FSK & PSK Constellation MATLAB Simulink MATLAB Code Comparisons among ASK, PSK, and FSK    Comparisons among ASK, PSK, and FSK ASK or OFF ON Keying Ask is a simple (less complex) Digital Modulation Scheme where we vary the modulation signal's amplitude or voltage by the message signal's amplitude or voltage. We select two levels (two different voltage levels) for transmitting modulated message signals for the exam. And for example, we mapped the signal as two-level  "+5 Volt"  (which is the upper level) and another level,  "0 Volt,"  which is considered as the lower level. Whenever we need to transmit binary bit  "1,"  then the transmitter transmits a signal of  "+5 Volts,"  and when we need to send bit  "0,"  then it transmits no power. But the receiver is intelligent enough to deflect whether you've sent binary bit  "1"  or  "0

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

Modulation Constellation Diagrams BER vs. SNR MATLAB code for BER vs SNR for M-QAM, M-PSK, QPSk, BPSK, ...   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 all; close all; EbN0=-4:1:24; % Signal to Noise Ratio per Bit (in dB) EbN0ratio=10.^(EbN0/10); % Converted into ratio colors={'k-*','r-h','g-o','c-s','m-s','y-*','k-p','b:s','m:d','g:p'}; index=1; %BPSK BPSK_BER = 0.5*erfc(sqrt(EbN0ratio)); plotHandle=plot(EbN0,log10(BPSK_BER),char(colors(index))); set(plotHandle,'LineWidth',1.7); hold on; index=index+1; %M-PSK m=2:1:5; M=2.^m; for i=M, k=log2(i); PSK_BER = 1/k*erfc(sqrt(EbN0ratio*k)*sin(pi/i)); plotHandle=plot

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 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 Key Download Pdf [June 2019] UGC Net Electronic Science Questions With Answer Key Download Pdf [December 2018] UGC Net Electronic Science Questions With Answer Key Download Pdf [July 2018] UG

Constellation Diagrams of ASK, PSK, and FSK

Modulation ASK, FSK & PSK Constellation This article will primarily discuss constellation diagrams, as well as what constellation diagrams tell us and the significance of constellation diagrams. Constellation diagrams can often demonstrate how the amplitude and phase of signals or symbols differ. These two characteristics lessen the interference between two signals or symbols. Figure 1: Constellation diagrams of ASK, PSK, and FSK The constellation points for ASK, PSK, and FSK [↗] are located in a different pattern, and the distances between the constellation points vary. According to the above diagram, the distance between ASK constellation points is (√Eb -0) = √Eb (where Eb stands for energy per bit). From the above figure, you can also see the distances between constellation points for PSK and FSK are 2√Eb and √(2Eb), respectively. In a constellation diagram, if the distance between signaling points is less, then the probability

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

Modulation Constellation Diagrams BER vs. SNR BER vs SNR for M-QAM, M-PSK, QPSk, BPSK, ... 1. 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.   2. What is 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, the SNR for a given communication system is 3dB. So, SNR (in ratio) = 10^{SNR (in dB) / 10} = 2 Therefore, in this instance, the signal power is twice as

MATLAB Code for Pulse Width Modulation (PWM) and Demodulation

   Pulse Width Modulation (PWM) MATLAB Script   clc; clear all; close all; fs=5; %frequency of the sawtooth signal fm=5; %frequency of the message signal sampling_frequency = 10e3; a=0.5; % amplitide t=0:(1/sampling_frequency):1; %sampling rate of 10kHz sawtooth=1.01*a.*sawtooth(2*pi*fs*t); %generating a sawtooth wave subplot(4,1,1); plot(t,sawtooth); % plotting the sawtooth wave title('Comparator Wave'); msg=a.*sin(2*pi*fm*t); %generating message wave subplot(4,1,2); plot(t,msg); %plotting the sine message wave title('Message Signal'); for i=1:length(sawtooth) if (msg(i)>=sawtooth(i)) pwm(i)=1; %is message signal amplitude at i th sample is greater than %sawtooth wave amplitude at i th sample else pwm(i)=0; end end subplot(4,1,3); plot(t,pwm,'r'); title('PWM'); axis([0 1 0 1.1]); %to keep the pwm visible during plotting. %% Demodulation % Demodulation: Measure the pulse width to reconstruct the signal demodulated_signal = zeros(size(msg)); for i =

BER vs SNR for ASK, FSK, and PSK

  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.  BER vs. SNR curves for ASK, FSK, and PSK MATLAB Code for Comparison of BER vs SNR for ASK, FSK, and PSK   % The code is written by SalimWireless.Com clear all; close all; clc; % Parameters N = 100000; % Number of bits % ASK Parameters SNR_dB_ASK = 0:1:20; % SNR in dB for ASK SNR_lin_ASK = 10.^(SNR_dB_ASK./10); % Linear SNR for ASK A_ASK = 1; % Amplitude of carrier signa