Skip to main content

Antenna Gain-Combining Methods - EGC, MRC, SC, and RMSGC



 There are different antenna gain-combining methods. They are as follows.


1. Equal gain combining (EGC)

2. Maximum ratio combining (MRC)

3. Selective combining (SC)

4. Root mean square gain combining (RMSGC)

5. Zero-Forcing (ZF) Combining 


1. Equal gain combining method

We add the correlated data streams from different antennas in the equal gain combining method. Then we multiply the resultant data with (1/(number of antennas))

For example, for two antenna gain-combining 

If the received symbols are y1 and y2, then 

Equal combing gain,

y_egc = 0.5 * (y1 + y2)


2. Maximum ratio combining method

We multiply the individual data streams with weights in the maximum ratio combining method. More weightage is multiplied by those data streams with maximum {|h|^2}, where h denotes the channel impulse response. And less weightage is multiplied by those data streams with corresponding small value of {|h|^2}. Then we sum the data streams to improve SNR.

In the case of Maximum Ratio Combining, if y1 and y2 are received symbols, then. 

y_mrc = a1 * y1 + a2*y2

Where a1 = magnitude of the channel impulse response of y1 and a2 is the magnitude of the channel impulse response of another channel. 

3. Selective combining method

In the selective combing method, we select a few data streamwise with higher SNR values than others. Then we combine them.


4. Root mean square gain combining method. 


We first take the square of individual data stream in the root mean square combining method. Then we sum them. And finally, we take the square root values of the composite data streams. This method shows the near-optimal performance as the maximum ratio combining, as some researcher claims.
 

5. Zero Forcing Combining

Zero Forcing is a linear combining technique used in MIMO systems to nullify inter-stream interference by inverting the channel. It works under the assumption of perfect channel knowledge (CSI).

The idea:

  • Given: y = Hx + n
  • Want to recover: x
  • Multiply both sides by W = (HHH)-1 HH (or pinv(H) in MATLAB)
  • Result: x^ = Wyx + Wn

It forces WHI, effectively "undoing" the channel. 

 

MATLAB Code for Zero Forcing Combining

%The code is written by SalimWireless.com

clc; clear; close all;

%% Parameters
Nt = 4; % Transmit antennas
Nr = 4; % Receive antennas
numBits = 1e4; % Number of bits per stream
SNRdB = 0; % SNR in dB
numRuns = 100; % Number of independent runs for averaging

%% Precompute noise standard deviation
noiseSigma = 10^(-SNRdB / 20);

%% Accumulator for total errors
totalErrors = 0;

for run = 1:numRuns
% Generate random bits for each run
bits = randi([0 1], Nt, numBits); % Size: [4 x 10000]
txSymbols = 1 - 2 * bits; % BPSK: 0→+1, 1→-1

% Generate random Rayleigh fading channel (4x4)
H = (randn(Nr, Nt) + 1j * randn(Nr, Nt)) / sqrt(2);

% Generate AWGN noise
noise = noiseSigma * (randn(Nr, numBits) + 1j * randn(Nr, numBits)) / sqrt(2);

% Received signal
y = H * txSymbols + noise;

% Zero Forcing equalizer
W_zf = pinv(H);
rxSymbols = W_zf * y;

% BPSK demodulation
rxBits = real(rxSymbols) < 0;

% Count errors
totalErrors = totalErrors + sum(rxBits(:) ~= bits(:));
end

%% Final BER
BER = totalErrors / (Nt * numBits * numRuns);
fprintf('Average BER over %d runs for 4x4 MIMO ZF at %d dB SNR: %.5f\n', numRuns, SNRdB, BER);
web('https://www.salimwireless.com/search?q=antenna%20combining%20methods', '-browser');

Further Reading 

  1.  

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

Constellation Diagrams of ASK, PSK, and FSK

๐Ÿ“˜ Overview ๐Ÿงฎ Simulator for constellation diagrams of ASK, FSK, and PSK ๐Ÿงฎ Theory ๐Ÿงฎ MATLAB Codes ๐Ÿ“š 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 SNR (dB): 15 Add A...

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

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

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

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