When the parameter alpha is set to 1, the scheme becomes the standard Alamouti code. In this case, the transmitted signals are perfectly orthogonal, which allows very simple and optimal linear decoding at the receiver.
When alpha is not equal to 1, the scheme is referred to as a modified Alamouti code. The basic Alamouti structure is preserved, but the signals are intentionally scaled or weighted. This modification causes a slight loss of perfect orthogonality, although the receiver can still use linear decoding with low complexity.
Modified Alamouti codes are commonly used to model practical impairments in wireless systems, such as channel mismatch, unequal transmit power between antennas, hardware imperfections, or time-varying channels, where the assumptions of the standard Alamouti code no longer strictly hold.
MATLAB Code
% Parameters
N = 1e4; % Number of symbols
SNR_dB = 0:5:30; % SNR range
alpha = 0.8; % Modification factor (alpha = 1 -> standard Alamouti)
% Symbol generation (QPSK)
data = randi([0 3], N, 2);
s = pskmod(data, 4, pi/4); % QPSK symbols
s1 = s(:,1);
s2 = s(:,2);
% Channel (Rayleigh fading)
h1 = (randn(N,1) + 1j*randn(N,1))/sqrt(2);
h2 = (randn(N,1) + 1j*randn(N,1))/sqrt(2);
SER = zeros(length(SNR_dB),1);
for k = 1:length(SNR_dB)
SNR = 10^(SNR_dB(k)/10);
noise_var = 1/SNR;
% Noise
n1 = sqrt(noise_var/2)*(randn(N,1)+1j*randn(N,1));
n2 = sqrt(noise_var/2)*(randn(N,1)+1j*randn(N,1));
% Transmission (Modified Alamouti)
% Time slot 1
r1 = h1.*s1 + h2.*s2 + n1;
% Time slot 2
r2 = -alpha*h1.*conj(s2) + h2.*conj(s1) + n2;
% Receiver (Linear combining)
s1_hat = conj(h1).*r1 + h2.*conj(r2);
s2_hat = conj(h2).*r1 - alpha*h1.*conj(r2);
% Normalize
denom = abs(h1).^2 + abs(h2).^2;
s1_hat = s1_hat ./ denom;
s2_hat = s2_hat ./ denom;
% Detection
s1_dec = pskdemod(s1_hat, 4, pi/4);
s2_dec = pskdemod(s2_hat, 4, pi/4);
% SER
SER(k) = mean(s1_dec ~= data(:,1) | s2_dec ~= data(:,2));
end
% Plot
figure;
semilogy(SNR_dB, SER, 'o-', 'LineWidth', 2);
grid on;
xlabel('SNR (dB)');
ylabel('Symbol Error Rate');
title('Modified Alamouti STBC');
Output