您现在的位置:首页 >> 通信 >> 内容

基于扩频解扩+turbo译码的16QAM图传通信系统matlab误码率仿真,扩频参数可设置

时间:2024/10/18 4:56:34 点击:

  核心提示:0sj_024m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Zp2Ym5pt

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

该通信系统主要用于图像传输,适用于对图像质量和传输可靠性要求较高的场景,如无人机图像传输、视频监控、无线电视广播等。

在复杂的电磁环境中,需要保证图像传输的稳定性和清晰度,因此采用了扩频解扩和 Turbo 译码等技术来提高系统的抗干扰能力。

发射端:包括图像源、16QAM调制器、扩频器、发射天线等。

接收端:包括接收天线、解扩器、16QAM解调器、Turbo 译码器、图像显示设备等。

4.部分源码

........................................................................

for i=1:length(SNR)

    Rimages = [];

    for iii=1:length(datbin)/Iimage_len

        [SNR(i),iii,floor(length(datbin)/Iimage_len)]

        %产生需要发送的随机数

        Trans_data = [datbin(Iimage_len*(iii-1)+1:Iimage_len*iii)];

        turbo_code = turbo_encode(Trans_data); 

        %DSSS   

        pseudoNumber          = round(rand(1,fp)');

        [dsss,converted,PN2]  = func_dsss(turbo_code,pseudoNumber,fp);

        Trans_BPSK            = QAM16_modulation(dsss);

        %通过高斯信道

        Rec_BPSK   = awgn(Trans_BPSK,SNR(i),'measured');   

        ReData     = QAM16_demodulation(Rec_BPSK);

        %DSSS

        dsss2      = func_dsss2(ReData,pseudoNumber,fp);

        %turbo译码 

        x_hat      = round(turbo_decode(dsss2));

        Rimages    = [Rimages,x_hat];   

    end 

    Rimages_snr{i} = Rimages;

end

 

dat  = Rimages_snr{1};

len  = 3*length(Rbin);

Rbin = dat(1:len/3);

Gbin = dat(1+len/3:2*len/3);

Bbin = dat(1+2*len/3:len);

%二进制转化为十进制

Rdec = func_bin2image([Rbin]);

Gdec = func_bin2image([Gbin]);

Bdec = func_bin2image([Bbin]);

%十进制转化为矩阵

RIimages = [reshape(Rdec,[256,256])]';

GIimages = [reshape(Gdec,[256,256])]';

BIimages = [reshape(Bdec,[256,256])]';

 

Images_snr_3(:,:,1) = RIimages;

Images_snr_3(:,:,2) = GIimages;

Images_snr_3(:,:,3) = BIimages;

%RGB合并

figure;

imshow(uint8(Images_snr_3));

 

 

dat = Rimages_snr{2};

len  = 3*length(Rbin);

Rbin = dat(1:len/3);

Gbin = dat(1+len/3:2*len/3);

Bbin = dat(1+2*len/3:len);

 

%二进制转化为十进制

Rdec = func_bin2image(Rbin);

Gdec = func_bin2image(Gbin);

Bdec = func_bin2image(Bbin);

%十进制转化为矩阵

RIimages = [reshape(Rdec,[256,256])]';

GIimages = [reshape(Gdec,[256,256])]';

BIimages = [reshape(Bdec,[256,256])]';

Images_snr0(:,:,1) = RIimages;

Images_snr0(:,:,2) = GIimages;

Images_snr0(:,:,3) = BIimages;

%RGB合并

figure;

imshow(uint8(Images_snr0));

dat = Rimages_snr{3};

len  = 3*length(Rbin);

Rbin = dat(1:len/3);

Gbin = dat(1+len/3:2*len/3);

Bbin = dat(1+2*len/3:len);

%二进制转化为十进制

Rdec = func_bin2image(Rbin);

Gdec = func_bin2image(Gbin);

Bdec = func_bin2image(Bbin);

%十进制转化为矩阵

RIimages = [reshape(Rdec,[256,256])]';

GIimages = [reshape(Gdec,[256,256])]';

BIimages = [reshape(Bdec,[256,256])]';

 

Images_snr3(:,:,1) = RIimages;

Images_snr3(:,:,2) = GIimages;

Images_snr3(:,:,3) = BIimages;

%RGB合并

figure;

imshow(uint8(Images_snr3));

 

if fp==1

save R_16qam_1_iamge.mat Images_snr_3 Images_snr0 Images_snr3

end

if fp==4

save R_16qam_4_iamge.mat Images_snr_3 Images_snr0 Images_snr3

end

if fp==8

save R_16qam_8_iamge.mat Images_snr_3 Images_snr0 Images_snr3

end

0sj_024m

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168