Table of contents
1. Algorithm simulation effect
2. Algorithms involve an overview of theoretical knowledge
4. Complete algorithm code file
1. Algorithm simulation effect
The matlab2022a simulation results are as follows:
2. Algorithms involve an overview of theoretical knowledge
The received signal of the MIMO-OFDM system is the linear superposition of the fading and additive noise of the signals sent by multiple transmitting antennas. If the channel is estimated using the estimation algorithm of the usual SISO-OFDM system or MIMO system, it will bring a large estimation error. For the consideration of design and implementation, this paper mainly studies the channel estimation algorithm of MIMO-OFDM system based on training sequence in the relatively mature slowly changing environment. This chapter will mainly discuss the design of special training sequences and the selection of channel estimation algorithms for MIMO-OFDM systems.
Compared with the single-antenna system, the channel estimation algorithm of the multi-antenna system has greater complexity, because the received signal is the superposition signal of multiple transmitted signals, and these transmitted signals are transmitted from multiple transmitting antennas at the same time, and arrive at any location almost synchronously. a receiving antenna. Therefore, to correctly identify multiple transmit signals from a superimposed signal, a channel estimation algorithm is required to estimate the channel characteristics of multiple parallel channels between each transmit antenna and the same receive antenna. For channel estimation between any transmit antenna and any receive antenna, reference may be made to the algorithm of the single-antenna system.
There are two main types of channel estimation algorithms: blind estimation algorithms and non-blind estimation algorithms. The blind channel estimation algorithm does not need to insert the training sequence in the transmitted information, which saves the bandwidth. The implementation of the blind estimation algorithm needs to utilize the statistical information contained in the transmitted information. This usually requires complex mathematical operations on the received signal at the receiving end, and the computational complexity of the algorithm is generally large, so it is not suitable for real-time systems that require relatively high delay. The non-blind estimation algorithm is to insert information known in advance at both ends of the transceiver into the transmitted signal. After receiving the known information, the receiving end estimates the channel's effect on the transmitted information by the amplitude, carrier frequency or phase change of the information. the impact of the decline. The algorithm is widely used and can be applied to almost all wireless communication systems.
Maximum ratio combining (MRC) algorithm:
Maximum ratio combining is the optimal choice in diversity combining technology. Compared with selective combining and equal gain combining, the best performance can be obtained. The performance improvement is the higher signal-to-noise ratio brought by Array Gain, which in turn brings better Dependent on the bit error rate characteristics.
The implementation of Maximal Ratio Combining is to multiply different signals of N channels of diversity by a different coefficient wi,i=1,2,..., N, the determination of coefficients and the fading coefficient hi of N channels of branches , i=1,2,...,N are related. usually have
3.MATLAB core program
...................................................... SNRs1 = [0:2:18]; figure; %MRC mrcber = []; for snr=SNRs1 snr signal = round(rand(LENS, 1)); datqpsk = bi2de(reshape(signal, [], 2)); Vqpsk = qammod(datqpsk, 4)/sqrt(2); channel1 = ch_Rayleigh(zeros(length(Vqpsk), 1), 0); channel2 = ch_Rayleigh(zeros(length(Vqpsk), 1), 0); CHqpsk1 = channel1.*Vqpsk; CHqpsk2 = channel2.*Vqpsk; Nqpsk1 = ch_Rayleigh(CHqpsk1, snr); Nqpsk2 = ch_Rayleigh(CHqpsk2, snr); demod_symb = zeros(length(Vqpsk), 1); for i=1:length(Vqpsk) channel = [channel1(i) ; channel2(i)]; received_value = [Nqpsk1(i) ; Nqpsk2(i)]; ls_est_value = [channel'*received_value]/(channel'*channel); demod_symb(i) = OfdmSym(ls_est_value, @(x)(x)); end mrcber = [mrcber ; [1-(sum(demod_symb==datqpsk)/length(Vqpsk))]]; end semilogy(SNRs1, mrcber,'-bs',... 'LineWidth',1,... 'MarkerSize',6,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[0.9,0.0,0.0]); hold on; xlabel('SNR[db]'); ylabel('BER'); LENS = 30000; SNRs2 = [0:2:16]; ............................................................... semilogy(SNRs2, stcber,'-mo',... 'LineWidth',1,... 'MarkerSize',6,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[0.5,0.9,0.0]); .......................................... semilogy(SNRs3, bfber,'-b^',... 'LineWidth',1,... 'MarkerSize',6,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[0.2,0.9,0.5]); ................................................................................. semilogy(SNRs4, smber,'-r>',... 'LineWidth',1,... 'MarkerSize',6,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[0.9,0.9,0.0]); grid on legend('MRC 1X2', 'STC 2X2', 'BF 2X2', 'SM 2X2'); A475
4. Complete algorithm code file
V