当前位置:网站首页>[ibdfe] matlab simulation of frequency domain equalization based on ibdfe
[ibdfe] matlab simulation of frequency domain equalization based on ibdfe
2022-07-02 03:42:00 【FPGA and MATLAB】
1. Software version
matlab2015b
2.IBDFE Frequency domain equalization scheme
What we have now IBDFE The structure is as follows :

From the structure ,IBDFE It is composed of feedforward filter and feedback filter , among C and B Represents the coefficients of feedforward filter and feedback filter . From the existing literature and data , At present, the structure is in the calculation process , Each iteration requires the estimation of coefficients , Thus, the complexity of system implementation is increased . Aiming at problems , At present, the main research results are as follows LC-IBDFE etc. , It separates the error in the decision signal from the expected signal , This reduces the complexity . But it's similar LC-IBDFE How to improve , It is based on the assumption that the bit error rate of each iteration is the same and very small , In reality, this situation is difficult to meet the conditions . The other is in IBDFE in , When there is serious channel fading , It will lead to overestimation of correlation factors , This leads to the spread of errors . In response to this question , The existing achievements mainly include the joint equalization algorithm of joint channel estimation and channel equalization . But the complexity of this algorithm is further increased .
3. Part of the source code
clc;
clear all;
close all;
warning off;
addpath 'func\'
rng('default');
rng(1);
Blk_size = 512; % Block size 512
Chu_size = 64; %chu Sequence , size 64
NFrame = 1000;
SNR = [0:1:14]; % Signal-to-noise ratio dB
Modsel = 2; %QPSK
Fs = 10*10^3; % Sampling rate
Ts = 1/Fs;
Fc = 5*10^3; % Carrier frequency
Fd = 10; % Doppler shift
tau = [0 0.5 0.5 1.2 1.2 2.1 2.1 3.3 3.3 4.8 4.8 6.5 6.5 8.5 10.8]*10^-4;
pdb = [0 -0.967 -0.967 -0.967 -1.933 -1.933 -1.933 -1.933 -2.900 -2.900 -2.900 -2.900 -2.86 -3.86 -3.84];
% Channel model
Channel = rayleighchan(Ts,Fd,tau,pdb);
%FFT Transformation
H_channel0 = fft(Channel.PathGains./sqrt(sum((abs(Channel.PathGains)).^2)),Blk_size+Chu_size+Chu_size);
%CHU Sequence
Chuseq = zeros(1,Chu_size);
for k = 0:Chu_size-1
tmps(k+1) = pi*k^2./Chu_size;
end
I = cos(tmps);
Q = sin(tmps);
Chuseq = I+sqrt(-1)*Q;
% Bit error rate
%turbo Parameters
Mss = 295;
for n = 1:length(SNR)
ErrMMSE = 0;
for k = 1:NFrame
[n,k]
rng(k);
% Random
Tdin = randint(1,Mss);
% utilize turbo Interleaver for , structure TB-DEF, Three way output
output = [func_turbo_code(Tdin)];
output = reshape(output, 1, []);
seridata1 = [output,0,0];
% modulation
Data = modulation(seridata1,Modsel);
Tx = [Chuseq,Data,Chuseq];
Channel0 = Channel.PathGains./sqrt(sum((abs(Channel.PathGains)).^2));
Rx1 = filter(Channel0,1,Tx);
Rx2 = awgn(Rx1,SNR(n),'measured');
Rx3 = Rx2;%(Chu_size+1:Chu_size+Blk_size);
H_channel = H_channel0;
% Frequency domain equalization
Y = fft(Rx3,Blk_size+Chu_size+Chu_size);
Wk = conj(H_channel)./(H_channel.*conj(H_channel)+10^(-SNR(n)/10));
Zk = Y.*Wk;
Qk = zeros(size(Zk));
Bk = (Blk_size-Chu_size)*(abs(H_channel).^2+10^(-SNR(n)/10))./(sum(abs(H_channel).^2+10^(-SNR(n)/10)))-1;
P = 5;
% call CNN Output weight of neural network
load CNNmodel.mat
Iter = 5;
for iter = 1:Iter
Wk = conj(H_channel)./(H_channel.*conj(H_channel)+10^(-SNR(n)/10)/P).*(1+Bk);
Zk = Y.*Wk;
Uk = Zk-Qk;
RxMMSE0 = ifft(Uk,Blk_size+Chu_size+Chu_size);
xn = sign(real(RxMMSE0))+sqrt(-1)*sign(imag(RxMMSE0));
% Go to UW
RxMMSE1 = xn(Chu_size+1:Blk_size);
% To adjudicate
RxMMSE = demodulation(RxMMSE1,Modsel);
Tdecode = round(func_turbo_decode(2*RxMMSE(1:end-2)-1));
tmps = Tdecode;
XK = fft([tmps,Chuseq],length(RxMMSE1));
% call CNN Deep learning neural networks , Calculation Bk value
Bk0 =([H_channel.*conj(H_channel)]+10^(-SNR(n)/10)/P)/(mean(([H_channel.*conj(H_channel)]+10^(-SNR(n)/10)/P)))/(Blk_size)-1;
Bk = func_CNN(H_channel,Bk0,cnn);
Qk = [XK,ones(1,192)].*Bk;
end
CrrMMSE = find((Tdin-Tdecode) == 0);
ErrMMSE = ErrMMSE+(Mss-length(CrrMMSE));
end
% Statistical bit error rate
errors(n) = ErrMMSE/(Mss*NFrame*Modsel);
end
figure
semilogy(SNR,errors,'b-o');
hold on;
grid on;
xlabel(' Signal-to-noise ratio SNR(dB)')
ylabel(' Bit error rate SBR')
save R1.mat SNR errors
4. Simulation results

A1-169
边栏推荐
猜你喜欢

MySQL connection query and subquery

Gradle foundation | customize the plug-in and upload it to jitpack

潘多拉 IOT 开发板学习(RT-Thread)—— 实验1 LED 闪烁实验(学习笔记)

蓝桥杯单片机省赛第十一届第二场

Failed to upgrade schema, error: “file does not exist
![[personal notes] PHP common functions - custom functions](/img/3d/d50622e3ddb08f654f30063e8226ac.jpg)
[personal notes] PHP common functions - custom functions

【DesignMode】原型模式(prototype pattern)

Review materials of project management PMP high frequency examination sites (8-1)

【力扣刷题】15.三数之和(双指针);17.电话号码的字母组合(递归回溯)

Analyse de 43 cas de réseaux neuronaux MATLAB: Chapitre 42 opérations parallèles et réseaux neuronaux - - opérations parallèles de réseaux neuronaux basées sur CPU / GPU
随机推荐
蓝桥杯单片机第四届省赛
Unity脚本的基础语法(6)-特定文件夹
VS2010 plug-in nuget
蓝桥杯单片机省赛第十二届第二场
[yolo3d]: real time detection of end-to-end 3D point cloud input
MySQL之账号管理
KL divergence is a valuable article
The 8th Blue Bridge Cup single chip microcomputer provincial competition
Kotlin基础学习 16
< job search> process and signal
PY3, PIP appears when installing the library, warning: ignoring invalid distribution -ip
PY3 link MySQL
How to do medium and long-term stocks, and what are the medium and long-term stock trading skills?
蓝桥杯单片机省赛第七届
Kotlin basic learning 16
Lost a few hairs, and finally learned - graph traversal -dfs and BFS
Vite: configure IP access
JIT deep analysis
[untitled] basic operation of raspberry pie (2)
Influence of air resistance on the trajectory of table tennis