资源简介

针对不同的衰落(对数正态分布、瑞利衰落、Nakagami 衰落),发射端采用不同的功率分配方案,绘制出相应的平坦衰落信道容量随平均接受信噪比变化的曲线,并进行对比分析。具体曲线参照Andrea Goldsmith 的《WIRELESS COMMUNICATIONS》教材中Figure 4.6、Figure 4.7、Figure 4.8。由于水平有限,仅供初学者入门学习,部分程序在运行时会报错和警告,可能是由于matlab程序中使用的integral等求解积分方程的函数,建议在matlab2012a以上的版本运行,本代码是在matlab2017b的版本上运行。如过聪明的你能发现错误并代码优化,期待大神不吝赐教。

资源截图

代码片段和文件信息

clc;close all;clear
Nsample = 100000;
Average_dB_SNR = 0:2.5:30;%average dB SNR: miu_dB
sigma_dB = 8;
Average_SNR_dB = Average_dB_SNR + sigma_dB.^2*log(10)/20; %average SNR in dB:10log_10(miu) = miu_dB + sigma_dB^2ln(10)/20   (2.46)
Average_SNR = 10.^(Average_SNR_dB/10);
%(1) AWGN_Capacity
AWGN_Capacity = log2(1+Average_SNR);
% flat fading Capacity
Shannon_Capacity_CSITR = zeros(size(Average_SNR_dB));
Shannon_Capacity_CSIR = zeros(size(Average_SNR_dB));
Maximum_Outage_Capcity = zeros(size(Average_SNR_dB));
Zero_Outage_Capcity = zeros(size(Average_SNR_dB));%for Rayleigh fading: Zero_Outage_Capcity = 0;

CSITR_gamma0 = zeros(size(Average_SNR_dB));%Shannon_Capacity_CSITR: waterfilling cutoff fade depth
TCI_gamma0 = zeros(size(Average_SNR_dB));%Maximum_Outage_Capcity: truncated channel inversion cutoff fade depth

%calculate CSITR_gamma0
pdfx = @(xmu_dBsigma_dB) 10/log(10)/sqrt(2*pi)./sigma_dB./x.*exp(-(10*log10(x)-mu_dB).^2/2./sigma_dB^2);
for index_snr0 = 1:length(Average_dB_SNR)
    mu_dB = Average_dB_SNR(index_snr0);
    gamma0 = 1e-3;
    abserr = 1;
    while(abserr>1e-2)
        gamma0 = gamma0 + 1e-3;
        abserr = abs(1 - integral(@(x)(1/gamma0 - 1./x).*pdfx(xmu_dBsigma_dB)gamma0Inf‘AbsTol‘1e-3‘RelTol‘1e-2)); % integral Introduced in R2012a        
    end
    CSITR_gamma0(index_snr0) = gamma0;
end
% search TCI_gamma0
for index_snr1 = 1:length(Average_SNR)
    Range_gamma0 = 1e-2:1:200;
    accuracy = 1;
    mu_dB = Average_dB_SNR(index_snr1);
    while(accuracy >10^-2)
        accuracy = accuracy/10;
        E_gamma0 = zeros(size(Range_gamma0));
        P1 = zeros(size(Range_gamma0));% P(gamma >= gamma0 )
        C_Pout = zeros(size(Range_gamma0));
        for index_gamma = 1:length(Range_gamma0)
            gamma0 = Range_gamma0(index_gamma);
            E_gamma0 = integral(@(x)1./x.*pdfx(xmu_dBsigma_dB)gamma0Inf‘AbsTol‘1e-3‘RelTol‘1e-2);
            Pout = integral(@(x)pdfx(xmu_dBsigma_dB)0gamma0‘AbsTol‘1e-3‘RelTol‘1e-2);
            C_Pout(index_gamma) = log2(1+1/E_gamma0)*(1-Pout);
        end
        [C_Pout_max  index_gamma] = max(C_Pout);
        snr1_gamma0 = Range_gamma0(index_gamma);
        Range_gamma0 = max(Range_gamma0(index_gamma) - accuracy0): accuracy/10 :Range_gamma0(index_gamma) + accuracy;      
    end
    TCI_gamma0(index_snr1) = snr1_gamma0;
    Maximum_Outage_Capcity(index_snr1) = C_Pout_max;
end
%simulation:  Shannon_Capacity_CSIRShannon_Capacity_CSITRZero_Outage_Capcity
E1 = zeros(size(Average_dB_SNR));
for i = 1:Nsample
    gamma_i_dB = normrnd(Average_dB_SNRsigma_dB);
    gamma_i = 10.^(gamma_i_dB/10);
    Shannon_Capacity_CSIR = Shannon_Capacity_CSIR + log2(1+gamma_i);
    S_gamma = zeros(size(Average_SNR_dB));
    index = find(gamma_i >= CSITR_gamma0);% P(gamma)/Average_P   (4.24)
    S_gamma(index) = 1./CSITR_gamma0(index) - 1./gamma_i(index);
    Shannon_Capacity_CSITR = Shannon_Capacity_CSITR + log2(1+ gamma_i .* S

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-22 11:56  matlab代码和运行结果\
     文件        3827  2018-04-10 17:27  matlab代码和运行结果\Log_normal_capacity.m
     目录           0  2018-08-22 11:55  matlab代码和运行结果\Matlab2017b运行结果图\
     文件       21327  2018-04-10 17:24  matlab代码和运行结果\Matlab2017b运行结果图\log_normal.fig
     文件       27211  2018-04-10 17:24  matlab代码和运行结果\Matlab2017b运行结果图\log_normal.png
     文件       23218  2018-04-10 18:35  matlab代码和运行结果\Matlab2017b运行结果图\Nakagami.fig
     文件       29308  2018-04-10 18:35  matlab代码和运行结果\Matlab2017b运行结果图\Nakagami.png
     文件       22753  2018-04-10 18:30  matlab代码和运行结果\Matlab2017b运行结果图\rayleigh.fig
     文件       26965  2018-04-10 18:30  matlab代码和运行结果\Matlab2017b运行结果图\rayleigh.png
     文件        3577  2018-04-10 18:28  matlab代码和运行结果\Nakagami_capacity.m
     文件        3342  2018-04-10 18:26  matlab代码和运行结果\Rayleigh_capacity.m
     文件      532205  2018-08-22 11:55  无线信道容量仿真实验.pdf

评论

共有 条评论