How to do BPSK modulation using Rayleigh fadding channel?
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Given a signal y= h(x) + n where n is AWGN noise and x is binary signal, h is complex channel constant. We need to determine y and then obtain x from it using Cholaski Inverse Method.
clear
N = 10^6 % number of bits or symbols
% Transmitter
ip = rand(1,N)>0.5; % generating 0,1 with equal probability
s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0
Eb_N0_dB = [-3:35]; % multiple Eb/N0 values
for ii = 1:length(Eb_N0_dB)
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % white gaussian noise, 0dB variance
h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % Rayleigh channel
% Channel and noise Noise addition
y = h.*s + 10^(-Eb_N0_dB(ii)/20)*n;
% equalization
yHat = y./h;
% receiver - hard decision decoding
ipHat = real(yHat)>0;
% counting the errors
nErr(ii) = size(find([ip- ipHat]),2);
end
In the line
yHat = y./h;
it is a equalization process done by simple method. I need to do the same using Cholaski Decomposition. Any help will be highly apprecialbe.
0 commentaires
Réponses (1)
possibility
le 12 Mai 2018
I am not sure how this is related to Cholesky decomposition. But let me describe a solution for it.
Assume, y=hs+n where h is the 1-by-N channel vector. If you know the channel at the receiver, you can do the following:
h'y=h'(hs+n)
h'y=h'hs + h'n % Since h'h is a N-by-N square matrix, inverse can be taken now. Multiply both sides with inv(h'h)
inv(h'h) h' y = inv(h'h) h'hs + inv(h'h)h'n
inv(h'h) h' y = s + inv(h'h)h'n = yhat
Hence, multiplying the received signal, y, with inv(h'h) h' results in the noisy version of s.
You can do it as follows:
yhat = inv(h'h)*h'*y
I couldn't see now whether it has to be "transpose" or "conjugate transpose". But this method is well-known as least squares.
Voir également
Catégories
En savoir plus sur BPSK dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!