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

news/2025/1/23 18:48:58/

    目录

 

💥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);endif BERVec(1,n)<2e-6BER_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'); breakend
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.

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


http://www.ppmy.cn/news/74525.html

相关文章

Linux 设备驱动程序(三)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

提高电商团队效率:必备的协作工具盘点

随着电商行业的快速发展&#xff0c;电商团队的规模和任务不断增加。然而&#xff0c;文件管理和文件协作方面的问题也随之出现。 电商行业可能存在的问题&#xff1a; 文件传输效率低下&#xff1a;电商团队需要频繁地共享和传输大量的文件&#xff0c;这会导致文件传输效率低…

第一个 Rust 程序

目录 必要知识代码示例 Cargo 教程[Rust 输出到命令行](https://www.runoob.com/rust/rust-println.html)资料 必要知识 Rust 语言代码文件后缀名为 .rs 使用 rustc 命令编译 .rs 文件 rustc runoob.rs # 编译 runoob.rs 文件编译后会生成 可执行文件 例如&#xff1a; …

effective c++ 29 为异常安全而努力是值得的

effective c 29 为异常安全而努力是值得的 本节主要阐述了面对异常我们该做的事情。用数据库进行类比&#xff0c;数据库中有事务的概念&#xff0c;即要么都执行成功&#xff0c;要么都不执行。类比于异常&#xff0c;当异常发生时&#xff0c;我们最好要恢复到调用之前的状态…

系列四、vue3 初始化项目(图形化界面方式)

一、启动UI界面 vue ui 二、创建项目 2.1、在此创建项目 2.2、创建新项目-详情配置 2.3、创建新项目-预设 2.4、创建新项目-功能 2.5、创建新项目-配置 2.6、运行项目 任务》serve》运行》启动app 2.7、首页 三、安装element-plus 3.1、步骤 ①、运行 vue ui 命令&#…

态路小课堂丨光口不亮?三种简单故障排查请查收!

在光链路中&#xff0c;当遇到交换机光口互连不亮情况时&#xff0c;很多人不知道如何处理。本文态路为您介绍三种简单故障排查方案&#xff0c;助您快速进行故障排查和问题定位。 一、首先检查一致性 1、两端光模块型号是否一致。一般包括速率、封装模式、接口类型、传输波长、…

第二篇、基于Arduino uno,用oled0.96寸屏幕显示数字和字符——结果导向

0、结果 说明&#xff1a;先来看看实际的结果&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;本次使用的oled是0.96寸的&#xff0c;别的规格的屏幕不一定适用本教程&#xff0c;一般而言有显示白色、蓝色和蓝黄一起显示的。 2、连线 说…

Golang idea panic()中报错解决

本地Golang升级到1.18后&#xff0c;发现原本写的一些代码在Goland中出现了一些红色的波浪线&#xff0c;将鼠标移到错误提示上&#xff0c;有如下的显示&#xff1a; Cannot use err (type error) as the type any 复制 image 源代码&#xff1a; conn, err : listener.Ac…