当前位置:网站首页>[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
边栏推荐
- Basic operations of MySQL database (based on tables)
- 0 foundation how to learn automated testing? Follow these seven steps step by step and you will succeed
- Pycharm2021 delete the package warehouse list you added
- The 6th Blue Bridge Cup single chip microcomputer provincial competition
- 焱融看 | 混合雲時代下,如何制定多雲策略
- FFMpeg AVFrame 的概念.
- How about Ping An lifetime cancer insurance?
- [designmode] builder model
- What kind of interview is more effective?
- Vite: configure IP access
猜你喜欢
How should the team choose the feature branch development mode or trunk development mode?
蓝桥杯单片机省赛第五届
ThreadLocal详解
Account management of MySQL
[designmode] Prototype Pattern
Basic syntax of unity script (6) - specific folder
Generate random numbers that obey normal distribution
The second game of the 12th provincial single chip microcomputer competition of the Blue Bridge Cup
MySQL之账号管理
PY3, PIP appears when installing the library, warning: ignoring invalid distribution -ip
随机推荐
Failed to upgrade schema, error: “file does not exist
Jetpack之LiveData扩展MediatorLiveData
蓝桥杯单片机省赛第八届
JS generate random numbers
近段时间天气暴热,所以采集北上广深去年天气数据,制作可视化图看下
Gradle foundation | customize the plug-in and upload it to jitpack
MySQL advanced (Advanced) SQL statement (II)
Generate random numbers that obey normal distribution
aaaaaaaaaaaaa
The 8th Blue Bridge Cup single chip microcomputer provincial competition
Basic operations of MySQL database (based on tables)
The 11th Blue Bridge Cup single chip microcomputer provincial competition
高性能 低功耗Cortex-A53核心板 | i.MX8M Mini
Basic syntax of unity script (6) - specific folder
Kotlin basic learning 14
微信小程序中 在xwml 中使用外部引入的 js进行判断计算
《MATLAB 神經網絡43個案例分析》:第42章 並行運算與神經網絡——基於CPU/GPU的並行神經網絡運算
《MATLAB 神经网络43个案例分析》:第41章 定制神经网络的实现——神经网络的个性化建模与仿真
蓝桥杯单片机数码管技巧
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