Understand ergodic capacity of a SISO flat-fading system over fading channels. Model and simulate capacity curves in Matlab.
Channel model
In the previous post, derivation of SISO fading channel capacity was discussed. For a flat fading channel (model shown below), with the perfect knowledge of the channel at the receiver, the capacity of a SISO link was derived as
where,
Since the channel impulse response
Jensen’s inequality [1] states that for any concave function f(x), where x is a random variable,
Applying Jensen’s inequality to Ergodic capacity in equation (2),
This implies that the Ergodic capacity of a fading channel cannot exceed that of an AWGN channel with constant gain. The above equation is simulated in Matlab for a Rayleigh Fading channel with
Matlab code
%This work is licensed under a Creative Commons %Attribution-NonCommercial-ShareAlike 4.0 International License %Attribute author : Mathuranathan Viswanathan at gaussianwaves.com snrdB=-10:0.5:20; %Range of SNRs to simulate h= (randn(1,100) + 1i*randn(1,100) )/sqrt(2); %Rayleigh flat channel sigma_z=1; %Noise power - assumed to be unity snr = 10.^(snrdB/10); %SNRs in linear scale P=(sigma_z^2)*snr./(mean(abs(h).^2)); %Calculate corresponding values for P C_erg_awgn= (log2(1+ mean(abs(h).^2).*P/(sigma_z^2))); %AWGN channel capacity (Bound) C_erg = mean((log2(1+ ((abs(h).^2).')*P/(sigma_z^2)))); %ergodic capacity for Fading channel plot(snrdB,C_erg_awgn,'b'); hold on; plot(snrdB,C_erg,'r'); grid on; legend('AWGN channel capacity','Fading channel Ergodic capacity'); title('SISO fading channel - Ergodic capacity'); xlabel('SNR (dB)');ylabel('Capacity (bps/Hz)');
Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.
References
[1] Konstantinos G. Derpanis, Jensen’s Inequality, Version 1.0,March 12, 2005.↗
Books by the author
Hi, is line 17 correct?
Thanks.
I can’t spot any mistake. Please correct if I am wrong.
Hi this is nice post. i have small doubt Pl clear it.
As ‘h’ defined as
h= sqrt((randn(1,100).^2 + 1i*randn(1,100).^2 ));
Q(1) It shows channel is flat for 100 bits. Is it mean 100 taps?
and
Q(2) If channel is quasi static then what ‘h’ would be ?
Yes. The channel is assumed to be flat
Even for a quasi-static channel, the channel varies slowly over one block that it can be considered constant. Thus the above code is still valid
The Rayleigh channel should be as
h= sqrt(1/2)*((randn(1,1000) + 1i*randn(1,1000) ));
here N=1000 is not the taps as in case of frequency selective channel.
Its slow varying/quasi-static frequency flat channel with
1000 realizations of the single-tap channel over which the monte-carlo simulation has been performed.
Law of large number relates the time average and statistical average for large N.
Thanks for spotting the mistake in the code. Corrected !!!