m Based on rbf neural network and genetic algorithm optimization MIMO-OFDM system channel estimation algorithm matlab simulation

Table of contents

1. Algorithm description

2. Simulation effect preview

3. MATLAB partial code preview

4. Complete MATLAB program


1. Algorithm description

       MIMO-OFDM channel estimation: Time, frequency, and space domains must be considered, especially in the air domain, the pilot sequences transmitted by different antennas need to be orthogonal to each other, otherwise the pilots cannot be distinguished at the receiving end, resulting in pilot pollution , the channel cannot be estimated correctly. There are many orthogonal methods, which can be staggered in time, and only one antenna is allowed to transmit at a certain time. It is also possible to stagger in frequency. It is also possible to make the pilot signal itself orthogonal (such as Alamouti coding). As shown below:

        I'm not very clear about the difference in algorithms. I don't study this one, and I don't understand it too deeply. However, commonly used channel estimation algorithms such as LS/ML estimation and LMMSE estimation can be used, but the form is slightly changed. It is worth mentioning that MIMO systems equipped with OFDM often work in frequency-selective fading channels, and are generally called wideband MIMO systems. To some extent, their channel estimation is easier than narrowband MIMO in flat fading channels. Because the pilot frequency is orthogonal in the airspace, we only need to consider multiple pairs of transceiver antennas as multiple single pairs of transceiver antennas, that is to say, the MIMO system can be transformed into a SISO system for analysis.

        The schematic diagram of the receiving end of the MIMO-OFDM system model is shown in Figure 4. That is, after each receiving antenna receives the corresponding OFDM symbol, it first performs time-frequency synchronization processing, then removes the corresponding CP, then performs OFDM demodulation (FFT), and finally performs detection and decoding according to the channel estimation result to recover the received bit stream.

       The RBF network is a three-layer forward network. The mapping from input to output is nonlinear , while the mapping from hidden layer space to output space is linear, which greatly speeds up the learning speed and avoids local minimum problems. The RBF network structure is shown in Figure 1 below.

  

 

     Here, we mainly obtain a neural network by performing neural network training on the pilot sequence and known pilot sequences, and perform real-time prediction and estimation of the input new number. Finally, the desired acceptance signal is obtained. We then introduce the method of using the improved genetic algorithm to optimize the RBF neural network and perform channel estimation.

       Genetic Algorithm (GA) is an optimization search method based on the principles of natural selection and genetics. It introduces the biological evolution principle of "survival of the fittest and survival of the fittest" into the code string group formed by parameters to be optimized, and screens each individual according to a certain fitness value function and a series of genetic operations, so that individuals with high fitness value It is retained to form a new group, and the fitness of each individual in the new group continues to increase until a certain limit condition is met. At this time, the individual with the highest fitness value in the population is the optimal solution of the parameters to be optimized. It is precisely because of the unique working principle of genetic algorithm that it can perform global optimization search in complex space and has strong robustness.

       Genetic algorithm is a kind of robust search algorithm that can be used for complex system optimization. Compared with traditional optimization algorithms, it has the following characteristics: (1
) It takes the coding of decision variables as the operation object. Traditional optimization algorithms often use the actual value of the decision variable itself for optimization calculation, but the genetic algorithm uses some form of coding of the decision variable as the operation object. This way of encoding decision variables allows us to use concepts such as chromosomes and genes in biology for reference in optimization calculations, to imitate the genetic and evolutionary incentives of organisms in nature, and to easily apply genetic operators.
(2) Directly use fitness as search information. Traditional optimization algorithms not only need to use the value of the objective function, but also the search process is often constrained by the continuity of the objective function, and may also need to meet the requirement that "the derivative of the objective function must exist" to determine the search direction. The genetic algorithm only uses the fitness function value transformed from the objective function value to determine the further search range, without other auxiliary information such as the derivative value of the objective function. Directly using the objective function value or individual fitness value can also concentrate the search range into the search space with higher fitness, thus improving the search efficiency.
(3) Using the search information of multiple points has implicit parallelism. The traditional optimization algorithm is often an iterative search process for the optimal solution starting from an initial point in the solution space. The search information provided by a single point is not much, so the search efficiency is not high, and it may fall into a local optimal solution and stagnate; the genetic algorithm starts the search process of the optimal solution from the initial population composed of many individuals, rather than from a single individual Start searching. Operations such as selection, crossover, and mutation are performed on the initial population to generate a new generation of population, which includes a lot of group information. This information can avoid searching for some unnecessary points, so as to avoid falling into the local optimum and gradually approach the global optimal solution.
(4) Use probabilistic search instead of deterministic rules. Traditional optimization algorithms often use deterministic search methods. The transfer from one search point to another has a definite transfer direction and transfer relationship. This certainty may make the search fail to reach the optimal store, which limits the application of the algorithm. scope. Genetic algorithm is an adaptive search technology. Its selection, crossover, mutation and other operations are carried out in a probabilistic manner, which increases the flexibility of the search process and can converge to the optimal solution with a high probability. Good global optimization solving ability. However, parameters such as crossover probability and mutation probability will also affect the search results and search efficiency of the algorithm, so how to choose the parameters of genetic algorithm is a relatively important issue in its application.
      In summary, since the overall search strategy and optimal search method of the genetic algorithm do not depend on gradient information or other auxiliary knowledge during calculation, it only needs to solve the objective function and the corresponding fitness function that affect the search direction, so the genetic algorithm provides a A general framework for solving complex system problems. It does not depend on the specific domain of the problem and has strong robustness to the types of problems, so it is widely used in various fields, including: function optimization, combinatorial optimization production scheduling problems, automatic control, robotics, image processing (
image restoration, image edge feature extraction...), artificial life, genetic programming, machine learning.

2. Simulation effect preview

The matlab2022a simulation results are as follows:

The channel capacity comparison is as follows:

 

3. MATLAB partial code preview

%参数初始化
Ta_num              = 2;%发送天线数目
Ra_num              = 2;%接收天线数目
%导频
mod_type            = 'QPSK';
IFFT_len            = 64;
Carriers            = 50;
bits_symbol         = 2;
symbols_per_carrier = 12;
%导频间隔
interval            = 5 ; 
Np                  = ceil(Carriers/interval)+1;
N_number            = Carriers*symbols_per_carrier*bits_symbol;
carriers            = 1:Carriers+Np;
%保护间隔长度
Cps                 = 8;             
SNR                 = [-8:2:20];   
%蒙特卡洛的仿真思路,每次SNR循环多次计算平均
Stimes              = 100;
X  = zeros(1,N_number);
X1 = [];
X2 = [];
X3 = [];
X4 = [];
X5 = [];
X6 = [];
X7 = [];
Y1 = [];
Y2 = [];
Y3 = [];
Y4 = [];
Y5 = [];
Y6 = [];
Y7 = [];
Y70   = [];
Y7_ZJ = [];
XX       = zeros(1,N_number);
dif_bit  = zeros(1,N_number);
 
for tt = 1:20
    tt
    %产生二进制随即序列
    X                           = func_signal_gen(N_number,Carriers);
    %QPSK调制
    [X1,X_initial]              = func_QPSK(X,N_number);
    %导频
    [pilot,training_symbols]    = func_pilot(symbols_per_carrier,Np,interval,Carriers);
    %串并
    X2                          = reshape(X1,symbols_per_carrier,Carriers);
    %插入导频
    [X3,signal]                 = func_pilot_insert(X2,pilot,Carriers,Np,training_symbols);
    %IFFT
    IFFT_modulation             = zeros(symbols_per_carrier,IFFT_len);
    IFFT_modulation(:,carriers) = X3;
    X4                          = ifft(IFFT_modulation,IFFT_len,2);
    %加循环前缀
    X6                          = func_cp(X4,symbols_per_carrier,IFFT_len,Cps);
    %并串
    X7                          = reshape(X6.',1,symbols_per_carrier*(IFFT_len+Cps));
    %信道
    Tx_data                     = func_multipath_channel(X7,Carriers,Ta_num,Ra_num);
    %设置由中继节点转换的信号
    %如果是多个中继,那么选择功率最大的一个,因此,本质就是选择计算一个中继点
    %所以这里就设置一个中继点来计算
    Tx_data_ZJ                  = func_multipath_channel_DJ(X7,Carriers,Ta_num,Ra_num);
    %高斯白噪声
    Error_ber  = [];
    for snr_db = SNR
        snr_db
%         RandStream.setDefaultStream(RandStream('mt19937ar','seed',tt));
        code_power  = 0;
        code_power  = [norm(Tx_data)]^2/(length(Tx_data));
        bit_power   = code_power/bits_symbol; 
        noise_power = 10*log10((bit_power/(10^(snr_db/10))));
        noise1      = wgn(1,length(Tx_data),noise_power,'complex');
%         RandStream.setDefaultStream(RandStream('mt19937ar','seed',tt+1));
        code_power  = 0;
        code_power  = [norm(Tx_data)]^2/(length(Tx_data));
        bit_power   = code_power/bits_symbol; 
        noise_power = 10*log10((bit_power/(10^(snr_db/10))));
        noise2      = wgn(1,length(Tx_data),noise_power,'complex');  
        %最后接收到的信号
        Y70         = Tx_data+noise1;
        %中继接收到的信号
        Y7_ZJ       = Tx_data_ZJ+noise2;
        %MRC接收
        Y7          = Y70+Y7_ZJ;
        %串并变换
        Y6          = reshape(Y7,IFFT_len+Cps,symbols_per_carrier).';
        %去保护间隔
        Y5          = func_cp_del(Y6,symbols_per_carrier,IFFT_len,Cps);
        %FFT,傅立叶变换
        Y4          = fft(Y5,IFFT_len,2);
        Y3          = Y4(:,carriers);
        %进行信道估计
        %实部
        Y2_real     = func_RBF_channel_est(real(Y3),signal,pilot,symbols_per_carrier,Np,real(training_symbols),Carriers,interval);
        %虚部
        Y2_imag     = func_RBF_channel_est(imag(Y3),signal,pilot,symbols_per_carrier,Np,imag(training_symbols),Carriers,interval);
        Y2          = Y2_real +sqrt(-1)*Y2_imag;
        YY1         = reshape(Y2,N_number/bits_symbol,1);
        %QPSK解调
        [y_real1,y_image1,y_re1,y_im1] = func_deqpsk(YY1);
        r01 = [];
        r11 = [];
        for k=1:length(y_re1);
            r11 = [r11,[y_re1(k),y_im1(k)]];
        end     
        dif_bit1        = round(X_initial - r11); 
        ber_snr1=0;
        for k=1:N_number;
            if dif_bit1(k)~=0;
               ber_snr1=ber_snr1+1;
           end
        end
        Error_ber = [Error_ber,ber_snr1];
    end
    BERs(:,tt) = Error_ber./N_number;
end
Ber_avg = mean(BERs,2);
01_083_m

4. Complete MATLAB program

Matlab source code description_I love C programming blog-CSDN blog

V

Guess you like

Origin blog.csdn.net/hlayumi1234567/article/details/128037938#comments_25164752