1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJyUmplw
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
OFDM是一种常用的多载波调制技术,它将高速数据流分为多个低速子载波,并使每个子载波之间正交,从而提高频谱利用率和抗干扰能力。QPSK是一种常见的调制方式,它将每两个比特映射为一个复数信号点,每个信号点对应四个相位(0°、90°、180°、270°)。无线图像传输系统由发送端和接收端组成。发送端将图像数据转换为比特流,然后采用QPSK调制和OFDM技术将比特流映射到不同的子载波上,生成OFDM符号序列。接收端接收OFDM符号序列,并利用DNN进行信道估计,根据估计得到的信道状态信息对接收信号进行解调和解调制,最终恢复出原始图像数据。
4.部分源码
clc;
clear;
close all;
warning off;
addpath 'func\'
Ttrain = load('T_train.mat');
Ptrain2 = [];
Ttrain2 = [];
for i = 1
for j = 1:1
Ptrain = load(['P_train',num2str(i),'_',num2str(j),'.mat']);
Ptrain2 = [Ptrain2;Ptrain.Ch_feature ];
Ttrain2 = [Ttrain2;Ttrain.Ch_feature ];
end
end
%输入层权值和偏移值
WI = rand(size(Ttrain2))/1000;
BI = rand(size(Ttrain2))/1000;
%定义4个隐含层
W1 = rand(size(Ttrain2));
BI1 = rand(size(Ttrain2));
W2 = rand(size(Ttrain2)/2);
BI2 = rand(size(Ttrain2)/2);
%输出层
WO = rand(size(Ttrain2)/2);
BO = rand(size(Ttrain2)/2);
%学习率
Lr = 0.0005;
%迭代次数
Iter = 2000;
for it = 1:Iter
it
%训练
tmps1 = Ptrain2.*WI+BI;
tmps2 = tmps1.*W1+BI1;
%激活的
tmps2_ = [];
tmps2_ = func_ReLu(tmps2);
tmps3 = tmps2_(1:2:end,1:2:end).*W2+BI2;
tmps4 = tmps3.*WO+BO;
error = (Ttrain2(1:2:end,1:2:end)-tmps4);
%更新权值
W1 = W1 + Lr*repmat(error,2,2);
BI1 = BI1+ Lr*repmat(error,2,2);
W2 = W2 + Lr*error;
BI2 = BI2+ Lr*error;
%输出层
WO = WO + Lr*error;
BO = BO + Lr*error;
errors(it) = mean2(abs(error));
end
figure;
plot(errors,'b','linewidth',2);
grid on
xlabel('训练次数');
ylabel('训练误差');
save dl0.mat errors WI BI W1 BI1 W2 BI2 WO BO
0X_014m
---