基于OFDM的无人机中继通信链路matlab误码率仿真

举报
简简单单做算法 发表于 2025/07/18 11:14:28 2025/07/18
【摘要】 1.算法运行效果图预览(完整程序运行后无水印) 2.算法运行软件版本matlab2024b/matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)  %无人机中继的发射功率 rg = 0.5; P3 = rg*TP*Pw*T/2*abs(h)^2; Rx_data=Fly_T +noise/P3^0.5;%归...

1.算法运行效果图预览

(完整程序运行后无水印)

1.jpeg

2.jpeg

 

2.算法运行软件版本

matlab2024b/matlab2022a

 

3.部分核心程序

(完整版代码包含详细中文注释和操作步骤视频)

 

       %无人机中继的发射功率
        rg = 0.5;
        P3 = rg*TP*Pw*T/2*abs(h)^2;
        Rx_data=Fly_T +noise/P3^0.5;%归一化,所以变为N/p
        
        
        %目标接收信号
        Rx_data_matrix=zeros(Nsymb,Lifft+GI+GIP);
        for i=1:Nsymb
            Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(Lifft+GI)+1:i*(Lifft+GI)+GIP);%串并变换
        end
        Rmx=Rx_data_matrix(:,GI+1:Lifft+GI); 
        
        %OFDM解码
        
        Y1=fft(Rmx,Lifft,2);
        Rx_carriers = Y1(:,carriers);
        Rx_phase    = angle(Rx_carriers);
        Rx_mag      = abs(Rx_carriers);
        
        [M, N]=pol2cart(Rx_phase, Rx_mag); 
        Rmx2 = complex(M, N);
         
        
        %16qam解调
        Rmx3 = reshape(Rmx2',size(Rmx2, 1)*size(Rmx2,2),1)' ;
        Rmx4 = func_16deqam(Rmx3);%解调
        
        baseband_in = Rmx4;
        
        %误码率计算
        bit_errors = find(baseband_in ~=bs_out);
        ber(mtkl,ij)        = size(bit_errors, 2)/Slen;
 
 
figure;
semilogy(SNRs,mean(ber,1),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('SNR');
ylabel('误码率');
title('中继到目标点的误码率性能');
 
if TP==0.3;
   save mat\R11.mat  SNRs ber
    
end
if TP==0.5;
   save mat\R12.mat  SNRs ber 
    
end
if TP==0.7;
   save mat\R13.mat  SNRs ber 
    
end
 
figure;
load mat\R11.mat
semilogy(SNRs,mean(ber,1),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on
load mat\R12.mat
semilogy(SNRs,mean(ber,1),'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
hold on
load mat\R13.mat
semilogy(SNRs,mean(ber,1),'-b^',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.2,0.9,0.5]);
hold on
grid on
xlabel('SNR');
ylabel('误码率');
title('中继到目标点的误码率');
legend('中继功率比例因子=0.3','中继功率比例因子=0.5','中继功率比例因子=0.7');

 

4.算法理论概述

       OFDM 将高速率的数据流分解为多个低速率的子数据流,然后将这些子数据流分别调制到多个相互正交的子载波上进行传输。在接收端,通过正交解调可以将各个子载波上的信号分离出来,恢复出原始的数据流。子载波之间的正交性使得它们在频谱上可以相互重叠,从而提高了频谱利用率。

 

      调制与解调:在发送端,通常使用逆快速傅里叶变换(IFFT)来实现OFDM调制,将频域的信号转换为时域信号。在接收端,使用快速傅里叶变换(FFT)将接收到的时域信号转换回频域信号,以便进行解调。

 

      循环前缀(CP):为了克服多径传播引起的符号间干扰(ISI),OFDM系统在每个符号的开头添加一段循环前缀。循环前缀是将符号的尾部复制到头部得到的,其长度大于信道的最大时延扩展。这样,在接收端可以通过丢弃循环前缀来消除ISI

 

      假设一个OFDM符号包含N个子载波,第k个子载波上的数据符号为X[k]k=0,1,,N1OFDM 符号的时域表达式可以通过对频域数据符号进行逆离散傅里叶变换(IDFT)得到。在理想情况下,经过IDFT后的连续时间OFDM信号s(t)可以表示为:

 

 

 

       在实际系统中,使用逆快速傅里叶变换(IFFT)来实现IDFT。离散时间的OFDM信号s[n]可以表示为:

 

3.jpg

 

       考虑一个基于 OFDM 的无人机中继通信系统,包含源节点(S)、无人机中继节点(R)和目的节点(D)。源节点发送的 OFDM 信号经过无人机中继转发到目的节点。

 

中继分配功率:中继节点需要对接收到的信号进行放大转发或者解码转发。合理分配中继功率可以增强信号强度,补偿传输过程中的损耗,提高接收端的信号质量,从而提升系统的吞吐量、降低误码率等性能指标。然而,过高的功率分配可能会引入更多的噪声和干扰,同时也会增加中继节点的能耗。

 

无人机飞行高度:无人机飞行高度会影响通信链路的传播损耗。较高的飞行高度可能会受到大气吸收等因素的影响。此外,飞行高度还会影响无人机与地面节点之间的视距(LOS)和非视距(NLOS)通信概率。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。