How to do BPSK modulation using Rayleigh fadding channel?
16 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
possibility
2018-5-12
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 BPSK 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!