mMatlab simulation of wireless image transmission based on OFDM+QPSK and DNN deep learning channel estimation, output bit error rate curve, and test with actual pictures

Table of contents

1. Algorithm simulation effect

2. Algorithms involve an overview of theoretical knowledge

3. MATLAB core program

4. Complete algorithm code file


1. Algorithm simulation effect

The matlab2022a simulation results are as follows:

 

 

 

2. Algorithms involve an overview of theoretical knowledge

       Wireless Image Transmission Based on OFDM+QPSK and DNN Deep Learning Channel Estimation" is a wireless communication system that utilizes Orthogonal Frequency Division Multiplexing (OFDM) and Quad Phase Shift Keying (QPSK) techniques to transmit image data, and Channel estimation is performed with the help of deep neural network (DNN), thereby improving the reliability and efficiency of signal transmission.

       OFDM is a commonly used multi-carrier modulation technology, which divides high-speed data streams into multiple low-speed sub-carriers and makes each sub-carrier orthogonal to each other, thereby improving spectrum utilization and anti-interference ability. QPSK is a common modulation method, which maps every two bits to a complex signal point, and each signal point corresponds to four phases (0°, 90°, 180°, 270°). The wireless image transmission system consists of a sending end and a receiving end. The sending end converts the image data into a bit stream, and then uses QPSK modulation and OFDM technology to map the bit stream to different subcarriers to generate OFDM symbol sequences. The receiving end receives the OFDM symbol sequence, uses DNN to perform channel estimation, demodulates and demodulates the received signal according to the estimated channel state information, and finally restores the original image data.

       The OFDM modulation process can be expressed as:

       The QPSK modulation process can be expressed as:

       DNN is a deep learning model for learning channel features from received signals. The input of DNN is the sampling value of the received signal, and the output is the corresponding channel state information. Training DNN needs to use samples with known channel state information, and adjust the parameters of DNN through optimization algorithms such as gradient descent, so that it can accurately estimate channel state information. 

Implementation process

Image encoding: converting image data into a bitstream.

QPSK modulation: Maps a bit stream into QPSK symbols.

OFDM modulation: Map QPSK symbols to different OFDM subcarriers to generate OFDM symbol sequences.

Channel transmission: The OFDM symbol sequence is transmitted through a wireless channel, introducing noise and fading.

Receiving and sampling: The receiving end samples the signal to obtain the sampled value of the received signal.

DNN channel estimation: Use samples of known channel state information to train the DNN model to obtain a channel estimation model.

Channel estimation: Use the DNN model to perform channel estimation on the received signal to obtain channel state information.

Demodulation and decoding: demodulate and decode the received signal according to the channel state information, and restore the original image data.

3. MATLAB core program

clc;
clear;
close all;
warning off;
addpath 'func\'
Ttrain  = load('T_train.mat'); 

Ptrain2 = [];
Ttrain2 = [];

for i = 1
    for j = 1:1
        Ptrain = load(['P_train',num2str(i),'_',num2str(j),'.mat']);   
        Ptrain2 = [Ptrain2;Ptrain.Ch_feature  ];
        Ttrain2 = [Ttrain2;Ttrain.Ch_feature  ];
    end
end
     
%输入层权值和偏移值
WI     = rand(size(Ttrain2))/1000;
BI     = rand(size(Ttrain2))/1000;
%定义4个隐含层
W1     = rand(size(Ttrain2));
BI1    = rand(size(Ttrain2));
W2     = rand(size(Ttrain2)/2);
BI2    = rand(size(Ttrain2)/2);
%输出层
WO     = rand(size(Ttrain2)/2);
BO     = rand(size(Ttrain2)/2);
%学习率
Lr     = 0.0005;
%迭代次数
Iter   = 2000;

for  it = 1:Iter
     it
     %训练
     tmps1  = Ptrain2.*WI+BI;
     tmps2  = tmps1.*W1+BI1;  
     %激活的
     tmps2_ = [];
     tmps2_ = func_ReLu(tmps2);
     
     tmps3  = tmps2_(1:2:end,1:2:end).*W2+BI2; 
     tmps4  = tmps3.*WO+BO;             
     error  = (Ttrain2(1:2:end,1:2:end)-tmps4);

     %更新权值
     W1     = W1 + Lr*repmat(error,2,2);
     BI1    = BI1+ Lr*repmat(error,2,2);
     W2     = W2 + Lr*error;
     BI2    = BI2+ Lr*error;
     %输出层
     WO     = WO + Lr*error;
     BO     = BO + Lr*error;
     errors(it) = mean2(abs(error));
end

figure;
plot(errors,'b','linewidth',2);
grid on
xlabel('训练次数');
ylabel('训练误差');

save dl0.mat errors WI BI W1 BI1 W2 BI2 WO BO
0X_014m

4. Complete algorithm code file

V

Guess you like

Origin blog.csdn.net/hlayumi1234567/article/details/132010246