m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

简介: m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

1.算法描述

   随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式和策略,很难为未来的无线通信事业的进一步发展提供更多可利用的无线频谱带宽和更高的频谱利用率。认知无线电技术是实现动态频谱机会接入并有效解决无线频谱资源匮乏问题的关键技术之一;正交频分复用技术具有抗多径干扰与抗频率选择性衰落能力强,以及频谱利用率高等优点,使其成为实现认知无线电系统的理想备选方案之一。功率分配不但是传统正交频分复用系统中的关键核心技术,而且还是认知无线电系统中频谱分析与判决的重要手段。在认知无线电系统中,认知用户通信链路信道容量的最大化,同样也需要深化对功率分配的研究。本文针对正交频分复用调制子载波的IEEE802.11a下行链路的认知无线电系统,进行了发射功率分配算法研究。

   本课题,我们参考文献《Power Allocation and Subcarrier Pairing Algorithm

for Regenerative OFDM Relay System》对OFDM的功率分配和子载波配对算法的信道容量进行matlab仿真分析研究。

    随着无线通信的飞速发展,所需要的无线频谱资源越来越多,当前频谱资源已显得越来越缺乏。认知无线电提供了一种按伺机的方式共享和利用频谱的手段,可以有效地解决这一问题。认知无线电技术通过智能感知通信环境中未使用的频谱,并加以利用来提高频谱的利用效率。OFDM的频谱利用效率高,并且抗频率选择性衰落特性强,已成为4G的主要应用技术。随着人们对通讯业务和质量的要求不断提高,OFDM技术的应用也越来越广泛。OFDM系统为了实现系统容量最大化通常会对系统用户进行合理的功率分配,因此功率分配是OFDM系统的关建技术之一。 

   在基于OFDM的认知无线电系统中,授权用户会受到认知用户带内子载波带外旁瓣泄漏功率的干扰。这里引入了功率控制参数来调整授权用户的干扰功率约束值,提出了一种认知用户子载波间的最优功率分配算法,通过求解一个凸优化问题来获得最优的功率分配方案。仿真结果表明:与其他算法相比,采用该方法获得的功率分配方案,在满足授权用户干扰功率约束值的条件下,可以使认知用户的信道容量最大化。

   为了使N路子信道信号在接收时能够完全分离,需要满足在每个码元持续时间Ts内,任意两个载波相互正交。三角函数系{1,sint,cost,...,sinnt,cosnt,...}满足任意两个不同函数之间相互正交(在[−π,π]内两个不同函数乘积积分为0),利用这一性质,可以得到彼此相互正交的载波。从时域上来看,发送端信号在空间中的叠加可以写作:

1.png

   从复数形式上可以看出,当对时间t进行离散化,OFDM其实就是对各路子载波上的传输信号(Bi)进行了求傅里叶反变换的操作,OFDM在进行调制时也是利用IFFT模块实现的。  

2.png

   从频域上来看OFDM。调制时,时域上是一个正弦载波和一个码元波形(门函数)的乘积,频域上体现的是对门函数频谱的搬移(门函数的频谱为sinc函数),OFDM为了保证载波的正交性,最小子载频间隔Δf=1Ts。  

2.仿真效果预览
matlab2022a仿真结果如下:

3.png
4.png
5.png

3.MATLAB部分代码预览

%不分集OFDM的功率分配不带子载波配对算法下的信道容量;
%PA without pairing without diversity
C1  = 0;
C1s = 0;
for Ss = 1:length(Dist_Tx_Rn)
    Ss
    %利用蒙特卡洛算法思想,进行多次的循环,再计算平均
    for q=1:Simu_Times
        for Ts = 1:Time_Slot
            Cha      = 0.5e-1*random('rayleigh',1,N_hop/Time_Slot,Num_sc);
            Sub      = zeros(N_hop/Time_Slot,Num_sc);%每跳的子载波分布向量
            Capacity = zeros(1,N_hop/Time_Slot);     %定义容量向量
            for i=1:N_hop/Time_Slot
                %每一跳噪声设定
                n0        = randn(1,10000)*sqrt(SCB*0.5e-10);      
                N0        = std(n0,1,2)^2/SCB;
                %选择其中的min值
                [a,ind]   = min(Cha(:,Time_Slot));   
                %将选中的载波的信道因子赋值给该跳的子载波分布向量
                Sub(i,ind)= a;                      
                %进行注水功率分配
                [Capacity1(i),Powers1] = pwrallo(SP,Sub(i,:),SCB,N0,gammar); 
                %载波被某一跳占用,将所有跳上的该载波信道因子设为0
                Cha(:,ind)             = 0;     
            end
            while max(Cha(:))> 0               %判断是否有未分配的载波,有的话继续分配
                [b,indexmin] = min(Capacity1);  %找出速率最小的跳
                i            = indexmin;
                [c,indexmax] = max(Cha(i,:)); %给最小的跳分配载波
                k            = indexmax;
                Sub(i,k)     = c;
                [Capacity1(i),Powers1] = pwrallo(SP,Sub(i,:),SCB,N0,gammar);
                Cha(:,k)     = 0;
            end     
        end
        for kk = 1:length(Powers1)
            h1k    = func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),kk);
            h2k    = func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),kk);
            delta  = (SNR)^2/2;
            a1k    = (abs(h1k))^2/delta;
            a2k    = (abs(h2k))^2/delta;
            Pk     = Powers1(kk)+1/((a1k*a2k)/(a1k+a2k));
            C1(kk) = log2(1 + (a1k*a2k)/(a1k+a2k)*Pk); 
        end
        C1s(q) = SB/(2*Num_sc)*sum(C1); 
    end
    PA_Wo_P(Ss) = mean(C1s)/1e6;
end
%**************************************************************************
%**************************************************************************
%**************************************************************************
%************************************************************************** 
 
 
 
%%
%不分集OFDM的均匀功率分配带子载波配对算法下的信道容量;
%uniform PA without pairing without diversity
for Ss = 1:length(Dist_Tx_Rn)
    Ss
    %利用蒙特卡洛算法思想,进行多次的循环,再计算平均
    for q=1:Simu_Times
        %通过注水法得到的每个Powers1,然后进行sub_carrier pairing
        %通过注水法得到的每个Powers1,然后进行sub_carrier pairing
        Num_sc1 = randperm(Num_sc);
        Num_sc2 = randperm(Num_sc);        
        for kk = 1:length(Num_sc2)
            h1k(kk)= func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),Num_sc1(kk));
            h2k(kk)= func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),Num_sc2(kk));
            hk(kk) = h1k(kk)*h2k(kk)/(h1k(kk) + h2k(kk));
            delta  = (SNR)^2/2;
            a1k(kk)= (abs(h1k(kk)))^2/delta;
            a2k(kk)= (abs(h2k(kk)))^2/delta;
        end
        %排序
        A1k = sort(a1k);
        A2k = sort(a2k);
        for kk = 1:Num_sc
            %均匀分配
            Pk      = SP/Num_sc;
            tmp1(kk)=(A1k(kk)*A2k(kk))/(A1k(kk)+A2k(kk));
            C1(kk)  = log2(1 + tmp1(kk)*Pk); 
        end
        C1s(q) = SB/(2*Num_sc)*sum(C1); 
    end
    uPA_W_P(Ss) = mean(C1s)/1e6;
end
%**************************************************************************
%**************************************************************************
%**************************************************************************
%**************************************************************************
 
 
 
%%
%不分集OFDM的均匀功率分配不带子载波配对算法下的信道容量;
%uniform PA without pairing without diversity
for Ss = 1:length(Dist_Tx_Rn)
    Ss
    %利用蒙特卡洛算法思想,进行多次的循环,再计算平均
    for q=1:Simu_Times
        Num_sc1 = randperm(Num_sc);
        Num_sc2 = randperm(Num_sc);
        for kk = 1:Num_sc
            h1k(kk)    = func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),Num_sc1(kk));
            h2k(kk)    = func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),Num_sc2(kk));
            delta      = (SNR)^2/2;
            a1k(kk)    = (abs(h1k(kk)))^2/delta;
            a2k(kk)    = (abs(h2k(kk)))^2/delta;
            %均匀分配
            Pk         = SP/Num_sc;
            tmp2(kk)   =(a1k(kk)*a2k(kk))/(a1k(kk)+a2k(kk));
            C1(kk)     = log2(1 + tmp2(kk)*Pk); 
        end
        C1s(q) = SB/(2*Num_sc)*sum(C1); 
    end
    uPA_Wo_P(Ss) = mean(C1s)/1e6;
end
01_064_m
相关文章
|
10天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
1天前
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的智能零售柜商品识别系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2目标检测算法的仿真结果,包括多张检测图像。YOLOv2是实时检测算法,由卷积层和全连接层构成,输出张量包含边界框坐标和类别概率。损失函数由三部分组成。程序使用75%的数据进行训练,剩余25%作为测试集。通过ResNet-50预训练模型构建YOLOv2网络,并用SGDM优化器进行训练。训练完成后,保存模型为`model.mat`。
14 2
|
2天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了运用粒子群优化(PSO)调整深度学习模型超参数以提升时间序列预测性能的方法。在比较了优化前后的效果(Ttttttttttt12 vs Ttttttttttt34)后,阐述了使用matlab2022a软件的算法。文章详细讨论了CNN、GRU网络和注意力机制在时间序列预测中的作用,以及PSO如何优化这些模型的超参数。核心程序展示了PSO的迭代过程,通过限制和调整粒子的位置(x1)和速度(v1),寻找最佳解决方案(gbest1)。最终,结果保存在R2.mat文件中。
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
|
3天前
|
存储 算法
m考虑时偏影响的根升余弦滤波器matlab仿真
MATLAB 2022a仿真实现了根升余弦滤波器(RRC)的效果,该滤波器常用于通信系统以消除码间干扰。RRC滤波器设计考虑了时偏影响,其脉冲响应由理想矩形脉冲卷积得到,滚降系数控制衰减速度。在有同步误差时,滤波器需保持良好ISI抑制能力。MATLAB代码展示了计算时偏量并应用RRC滤波于连续样本的过程,以降低误码率并优化系统性能。
11 2
|
3天前
|
算法 数据安全/隐私保护 数据格式
基于混沌序列的图像加解密算法matlab仿真,并输出加解密之后的直方图
该内容是一个关于混沌系统理论及其在图像加解密算法中的应用摘要。介绍了使用matlab2022a运行的算法,重点阐述了混沌系统的特性,如确定性、非线性、初值敏感性等,并以Logistic映射为例展示混沌序列生成。图像加解密流程包括预处理、混沌序列生成、数据混淆和扩散,以及密钥管理。提供了部分核心程序,涉及混沌序列用于图像像素的混淆和扩散过程,通过位操作实现加密。
|
5天前
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的人体喝水行为视频检测系统matlab仿真,带GUI界面
MATLAB 2022a中使用YOLOv2算法对avi视频进行人体喝水行为检测,结果显示成功检测到目标。该算法基于全卷积网络,通过特征提取、锚框和损失函数优化实现。程序首先打乱并分割数据集,利用预训练的ResNet-50和YOLOv2网络结构进行训练,最后保存模型。
14 5
|
8天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文档介绍了使用MATLAB2022A中PSO优化算法提升时间序列预测模型性能的过程。PSO优化前后对比显示了优化效果。算法基于CNN、LSTM和Attention机制构建CNN-LSTM-Attention模型,利用PSO调整模型超参数。代码示例展示了PSO的迭代优化过程及训练、预测和误差分析环节。最终,模型的预测结果以图形形式展示,并保存了相关数据。
|
11天前
|
机器学习/深度学习 算法
m基于深度学习的QPSK调制解调系统频偏估计和补偿算法matlab仿真
MATLAB 2022a中展示了基于深度学习的QPSK调制解调系统频偏估计和补偿算法仿真结果。该算法运用神经网络模型实时估计并补偿无线通信中的频率偏移。QPSK调制将二进制信息映射到四个相位状态,解调通常采用相干解调。深度学习算法通过预处理、网络结构设计、损失函数选择和优化算法实现频偏估计。核心程序生成不同SNR下的信号,比较了有无频偏补偿的误码率,显示了补偿效果。
9 1
|
13天前
|
机器学习/深度学习 算法 计算机视觉
m基于yolov2深度学习的细胞检测系统matlab仿真,带GUI操作界面
MATLAB 2022a中实现了YOLOv2细胞检测算法的仿真,该算法基于CNN进行细胞自动定位与识别。采用Darknet-19网络结构,结合SPP和FPN提升多尺度检测性能。程序中,数据集按75%比例划分训练集和测试集,使用预训练的ResNet-50构建YOLOv2网络,并用'sgdm'优化器进行训练。
15 0
|
14天前
|
数据可视化 API 决策智能
matlab使用Copula仿真优化市场风险
matlab使用Copula仿真优化市场风险
21 0