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
Equal Gain Combining (EGC) is a diversity combining technique in which the receiver aligns the phase of the received signals from multiple antennas (or channels) but gives them equal amplitude weight before summing.
This means each received signal is phase-corrected to be coherent with others, but no scaling is applied based on signal strength or channel quality (unlike MRC).
Mathematically, for received signals y1, y2, ..., yN with complex channel gains h1, h2, ..., hN, the EGC output is:
Here:
- hi is the complex channel gain
- hi* / |hi| is a unit-magnitude phasor that corrects the phase of each path
- All corrected signals are added with equal magnitude
2. Maximum ratio combining method
Maximum Ratio Combining (MRC) multiplies each received signal by the complex conjugate of its corresponding channel coefficient. This corrects the phase distortion introduced by the channel and gives more weight to signals with higher power (|h|2).
For example, if y1 and y2 are received signals, and h1, h2 are the complex channel gains, then:
MATLAB Code for Maximum Ratio Combining (MRC)
3. Selective combining method
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 + nWant to recover: x
Multiply both sides by W = (HHH)-1 HH (or pinv(H) in MATLAB)
Result: x = Wy ≈ x + Wn
It forces WH ≈ I, effectively "undoing" the channel.
MATLAB Code for Zero Forcing Combining
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');