1.算法仿真效果
matlab2022a仿真结果如下(完整代码运行后无水印):
仿真操作步骤可参考程序配套的操作视频。
2.算法涉及理论知识概要
该通信系统主要用于图像传输,适用于对图像质量和传输可靠性要求较高的场景,如无人机图像传输、视频监控、无线电视广播等。在复杂的电磁环境中,需要保证图像传输的稳定性和清晰度,因此采用了扩频解扩和 LDPC译码等技术来提高系统的抗干扰能力。
发射端:包括图像源、16QAM 调制器、扩频器、发射天线等。
接收端:包括接收天线、解扩器、16QAM 解调器、LDPC译码器、图像显示设备等。
2.1 16QAM 调制解调
16QAM 是用两路独立的正交 4ASK 信号叠加而成,4ASK 是用多电平信号去键控载波而得到的信号。它是 2ASK 调制的推广,和 2ASK 相比,这种调制的优点在于信息传输速率高。正交幅度调制是利用多进制振幅键控(MASK)和正交载波调制相结合产生的。16 进制的正交振幅调制是一种振幅相位联合键控信号。16QAM 的产生有 2 种方法:
(1)正交调幅法,它是有 2 路正交的四电平振幅键控信号叠加而成;
(2)复合相移法:它是用 2 路独立的四相位移相键控信号叠加而成。
2.2 扩频技术
扩频技术是将信号的带宽扩展到比原始信号带宽宽得多的范围内,从而降低信号的功率谱密度,提高抗干扰能力。
在发射端,将原始信号与一个高速的扩频码进行乘法运算,使信号的带宽被扩展。
在接收端,使用与发射端相同的扩频码进行解扩,将信号恢复到原始带宽。
常用的扩频码有伪随机码(如 m 序列、Gold 序列等),具有良好的自相关性和互相关性。
选择合适的扩频码可以提高系统的抗干扰性能和多址能力。
2.3 LDPC译码
低密度奇偶校验码(Low-Density Parity-Check Codes,LDPC)是一种具有逼近香农限性能的信道编码技术。在现代通信系统中,LDPC 码因其优异的性能而得到了广泛的应用。BP(Belief Propagation)译码算法是 LDPC 码的一种重要译码方法,它通过在 Tanner 图上进行消息传递来实现译码。
3.MATLAB核心程序
```dat = Rimages_snr{1};
len = 3length(Rbin);
Rbin = dat(1:len/3);
Gbin = dat(1+len/3:2len/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 = 3length(Rbin);
Rbin = dat(1:len/3);
Gbin = dat(1+len/3:2len/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 = 3length(Rbin);
Rbin = dat(1:len/3);
Gbin = dat(1+len/3:2len/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_1_iamge.mat Images_snr_5 Images_snr0 Images_snr5
end
if fp==4
save R_4_iamge.mat Images_snr_5 Images_snr0 Images_snr5
end
if fp==8
save R_8_iamge.mat Images_snr_5 Images_snr0 Images_snr5
end
0sj_029m
```