1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5qXm5Zp
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
在单载波频域均衡系统中,线性均衡算法虽然简单易行,但是其抑制噪声干扰和符号间干扰的能力有限,因此需要引入非线性的反馈和迭代机制以进一步提升系统性能。迭代块判决反馈均衡(Iterative Block Decision Feed-back Equalization ,IBDFE)就是一种行之有效的非线性算法,但其缺点是计算复杂度高。卷积神经网络默认输入是图像,可以让我们把特定的性质编码入网络结构,使是我们的前馈函数更加有效率,并减少了大量参数。卷积神经网络是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,其三个关键的操作,其一是局部感受野,其二是权值共享,其三是pooling层,有效的减少了网络的参数个数,缓解了模型的过拟合问题。
4.部分源码
..............................................
%信道模型
Channel = rayleighchan(Ts,Fd,tau,pdb);
%FFT变换
H_channel0 = fft(Channel.PathGains./sqrt(sum((abs(Channel.PathGains)).^2)),Blk_size+Chu_size+Chu_size);
%CHU序列
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;
%误码率
%turbo参数
Mss = 295;
for n = 1:length(SNR)
ErrMMSE = 0;
for k = 1:NFrame
[n,k]
rng(k);
%随机
Tdin = rand(1,Mss)>0.5;
%利用turbo的交织器,构建TB-DEF,三路输出
output = [func_turbo_code(Tdin)];
output = reshape(output, 1, []);
seridata1 = [output,0,0];
%调制
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;
%频域均衡
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;
%调用CNN神经网络的输出权值
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));
%去UW
RxMMSE1 = xn(Chu_size+1:Blk_size);
%进行判决
RxMMSE = demodulation(RxMMSE1,Modsel);
Tdecode = round(func_turbo_decode(2*RxMMSE(1:end-2)-1));
tmps = Tdecode;
XK = fft([tmps,Chuseq],length(RxMMSE1));
%调用CNN深度学习神经网络,计算Bk值
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
%统计误码率
errors(n) = ErrMMSE/(Mss*NFrame*Modsel);
end
01_169m