目录
💥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.
部分理论引用网络文献,若有侵权联系博主删除。