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

目录

1.算法仿真效果

2.算法涉及理论知识概要

2.1 qpsk调制解调

2.2 扩频技术

2.3 Turbo 译码

3.MATLAB核心程序

4.完整算法代码文件获得


1.算法仿真效果

matlab2022a仿真结果如下(完整代码运行后无水印)

仿真操作步骤可参考程序配套的操作视频。

2.算法涉及理论知识概要

       该通信系统主要用于图像传输,适用于对图像质量和传输可靠性要求较高的场景,如无人机图像传输、视频监控、无线电视广播等。
       在复杂的电磁环境中,需要保证图像传输的稳定性和清晰度,因此采用了扩频解扩和 Turbo 译码等技术来提高系统的抗干扰能力。

发射端:包括图像源、QPSK 调制器、扩频器、发射天线等。
接收端:包括接收天线、解扩器、QPSK 解调器、Turbo 译码器、图像显示设备等。

2.1 qpsk调制解调

       QPSK 调制原理:QPSK 是一种四进制相移键控调制方式,将输入的二进制数据序列分成两路,分别对两个正交的载波进行调制。每路数据根据其值(0 或 1)决定载波的相位,从而产生四个不同的相位状态,分别代表四个不同的符号。通过这种方式,可以在一个符号周期内传输两个比特的信息,提高了数据传输效率。

       在接收端,通过对接收信号进行相干解调,恢复出两路正交的载波信号。然后,根据接收信号的相位与四个预设的相位状态进行比较,确定接收到的符号。最后,将解调后的符号转换为二进制数据序列。

2.2 扩频技术

扩频技术是将信号的带宽扩展到比原始信号带宽宽得多的范围内,从而降低信号的功率谱密度,提高抗干扰能力。

在发射端,将原始信号与一个高速的扩频码进行乘法运算,使信号的带宽被扩展。

在接收端,使用与发射端相同的扩频码进行解扩,将信号恢复到原始带宽。

常用的扩频码有伪随机码(如 m 序列、Gold 序列等),具有良好的自相关性和互相关性。

选择合适的扩频码可以提高系统的抗干扰性能和多址能力。

2.3 Turbo 译码

      Turbo 码是一种接近香农极限的纠错编码技术,由两个并行的卷积码编码器和一个交织器组成。通过迭代译码的方式,不断更新译码结果,提高译码的准确性。

     常用的 Turbo 译码算法有最大后验概率(MAP)算法和软输出维特比算法(SOVA)等。这些算法通过计算接收信号的似然比,对发送的信息进行估计和纠错。Turbo 译码具有较高的纠错能力,能够在低信噪比条件下实现可靠的通信。但是,Turbo 译码的计算复杂度较高,需要较大的计算资源和时间。

3.MATLAB核心程序

..........................................................................
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_5(:,:,1) = RIimages;
Images_snr_5(:,:,2) = GIimages;
Images_snr_5(:,:,3) = BIimages;
%RGB合并
figure;
imshow(uint8(Images_snr_5));


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_snr5(:,:,1) = RIimages;
Images_snr5(:,:,2) = GIimages;
Images_snr5(:,:,3) = BIimages;
%RGB合并
figure;
imshow(uint8(Images_snr5));

if fp==1
save R_qpsk_1_iamge.mat Images_snr_5 Images_snr0 Images_snr5
end
if fp==4
save R_qpsk_4_iamge.mat Images_snr_5 Images_snr0 Images_snr5
end
if fp==8
save R_qpsk_8_iamge.mat Images_snr_5 Images_snr0 Images_snr5
end
0sj_022m

4.完整算法代码文件获得

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我爱C编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值