DVB-S中卫星通信系统的基带仿真(Matlab代码实现)

👨‍🎓个人主页:研学社的博客    

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

​数字视频广播(DVB)在卫星通信数字多媒体业务领域应用广泛,其一般采用MPEG-2编码、数字传输和纠错处理等通用技术,然而,当第三方(非合作方)通过卫星天线截获信号时,由于卫星信号种类繁多、接收信号信噪比低、分析出的音视频和网络数据业务质量差等因素,准确识别分析处理卫星DVB-S信号存在较大的困难。因此,本文针对性地设计了一套卫星通信DVB-S信号识别系统,该系统处理的信号规格全、集成度高,能在有效时间内完成对DVB-S信号的搜索确定、自动采集、精确分析和控守处理。

本代码包含DVB-S中卫星通信系统的基带仿真,并探索了调制方案和编码速率的性能。 代码模拟的无线信道主要是AWGN信道、瑞利衰落信道。

📚2 运行结果

主函数部分代码:

% 
clear all;
puncturepattern12=[1;1];%puncture pattern when the code rate=1/2
puncturepattern23=[1;1;0;1];                                                                                                   %2/3
puncturepattern56=[1;1;0;1;1;0;0;1;1;0];  
puncturepatternSelect=[puncturepattern12;puncturepattern23;puncturepattern56];
PC=[1,2;3,6;7,16];
tracebackdepthSelect=[60,75,120];
coderateSelect=[1/2,2/3,5/6];
M=4;
EbN0=-4:0.1:16;
BER_QPSK=zeros(3,length(EbN0));
EsNo=EbN0+10*log10(log2(M));
for b=1:3
EbNoratesemilogy=zeros(1,length(EbN0));  
hConvEnc = comm.ConvolutionalEncoder(poly2trellis(7,[133 171]));       %maybe need to change the 133 171
hConvEnc.PuncturePatternSource = 'Property';
hConvEnc.PuncturePattern =puncturepatternSelect(PC(b,1):PC(b,2),1);
hMod = comm.PSKModulator(M, 'BitInput',true); 
​
hDemod = comm.PSKDemodulator(M, 'BitOutput',true);
hVitDec = comm.ViterbiDecoder(poly2trellis(7,[133 171]),...
    'InputFormat','Hard');
​
hVitDec.PuncturePatternSource  = 'Property';                           %property not sure
hVitDec.PuncturePattern = hConvEnc.PuncturePattern;
hVitDec.TracebackDepth = tracebackdepthSelect(b);
​
hErrorCalc = comm.ErrorRate('ReceiveDelay',hVitDec.TracebackDepth);
​
​
EbNoEncoderOutput = EbN0 +10*log10(coderateSelect(b));
​
frameLength =45000;                                                     %framelength/maxnumtransmissions
targetErrors = 100; %100 errors max
maxNumTransmissions =10000000;
BERVec = zeros(3,length(EbNoEncoderOutput));
%BERp=zeros(3,length(EbNoEncoderOutput));
​
for n=1:length(EbNoEncoderOutput)
    reset(hErrorCalc);
    reset(hConvEnc);
    reset(hVitDec);
    [EbNoEncoderOutput(n),coderateSelect(b)]
    hChan = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Es/No)','EsNo',EsNo(n));           %signalpower not sure
​
    while(BERVec(2,n) < targetErrors)&&(BERVec(3,n)<maxNumTransmissions)
        data = randi([0 1],frameLength,1);                               %use framelength to create random number?
        encData = step(hConvEnc, data);
        modData = step(hMod,encData);
        channelOutput = step(hChan,modData);
        DemodData = step(hDemod, channelOutput);
        decData = step(hVitDec, (DemodData));
        %d = tracebackdepthSelect;
        BERVec(:,n) = step(hErrorCalc, data, decData);
   
    end
    if BERVec(1,n)<2e-6
        
       BER_QPSK(b,:) = BERVec(1,:);
%BERp(b,:)=BERVec(1,:);
save('BPSK_sim_3.mat','EbN0','BER_QPSK');
load('BPSK_sim_3.mat');
​
figure(1)
semilogy(EbN0,BER_QPSK(b,:),'-');
hold on;
​
grid on;
title('Part2 question1 BER verus Eb/N0 curve without RS outer code ');
ylabel('BER');
xlabel('EbN0 Ratio'); 
       
        
    break
    end
end
​
%BERp(b,:)=BERVec(1,:);
save('BPSK_sim_3.mat','EbN0','BER_QPSK');
load('BPSK_sim_3.mat');
 
end

🎉3 参考文献

[1]冯志霞. 卫星通信DVB-S/S2信号识别系统设计[D].国防科技大学,2018.

部分理论引用网络文献,若有侵权联系博主删除。

🌈4 Matlab代码实现

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值