x_hat1 = conj(h1).*y1 + h2.*conj(y2);
x_hat2 = conj(h2).*y1 - h1.*conj(y2);
h_power = abs(h1).^2 + abs(h2).^2;
x_hat1 = x_hat1 ./ h_power;
x_hat2 = x_hat2 ./ h_power;
x_data1 = rand(1,N/2) > 0.5;
x_data2 = rand(1,N/2) > 0.5;
binaryData = [x_data1; x_data2];
BPSK_data1 = 2*x_data1 - 1;
BPSK_data2 = 2*x_data2 - 1;
BPSK_data = [BPSK_data1; BPSK_data2];
Noise_power = zeros(1,length(snr_dB));
nErr = zeros(1,length(snr_dB));
Noise_power(k) = Ps./SNR(k);
n1 = sqrt(Noise_power(k)/2) * AWGN(N/2);
n2 = sqrt(Noise_power(k)/2) * AWGN(N/2);
y1 = h1.*BPSK_data1 + h2.*BPSK_data2 + n1;
y2 = h1.*(-conj(BPSK_data2)) + h2.*(conj(BPSK_data1)) + n2;
x_hat1 = conj(h1).*y1 + h2.*conj(y2);
x_hat2 = conj(h2).*y1 - h1.*conj(y2);
h_power = abs(h1).^2 + abs(h2).^2;
x_hat1 = x_hat1 ./ h_power;
x_hat2 = x_hat2 ./ h_power;
rx_bits1 = real(x_hat1) > 0;
rx_bits2 = real(x_hat2) > 0;
rx_bits = [rx_bits1; rx_bits2];
nErr(k) = sum(sum(binaryData ~= rx_bits));
n = randn(1, N) + 1i*randn(1, N);
x = sqrt(1/2) * randn(1, N);
y = sqrt(1/2) * randn(1, N);
semilogy(snr_dB, ber, 'b.-');
ylabel('Bit Error Rate');
title('BER for MIMO-BPSK with Alamouti Scheme');