基于DNN网络的信道估计matlab仿真,仿真输出信道估计值的mse指标

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 基于DNN网络的信道估计matlab仿真,仿真输出信道估计值的mse指标

1.算法仿真效果
matlab2022a仿真结果如下:
31aace5ca5c9c452328b83c38c261641_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
6373452003a0b4358e158bcfd89b2535_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
2ddb62365167597b8428467525064ba9_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
在信道变化迅速的系统中,通常依靠频域的导频子载波进行信道估计。导频子载波按照特定的规则插入到时频两维资源中。导频子载波处的信道响应可以通过最小二乘法(least-square,ls)和线性最小均方误差法(linearminimummeansquareerror,lmmse)进行估计,其他子载波处的信道响应则通过插值得到。基于判决反馈的盲信道估计方法将判决后的数据反馈至信道估计器进行去除调制信息操作,从而得到信道响应结果。基于相位的估计算法利用dqpsk调制信号幅度恒定相位为的整数倍的特性,利用接收信号相位在乘4、模2π、除以4的操作后,所有星座点都将变换到正实轴上(相位为0,幅度为1),这一操作相当于去除了dqpsk的调制信息,无需对信号进行判决。

    近几年,人工智能尤其是深度学习在无线通信物理层中也得到了广泛的应用。深度学习(Deep Learning, DL),由Hinton等人于2006年提出,是机器学习(MachineLearning, ML)的一个新领域。深度学习被引入机器学习使其更接近于最初的目标----人工智能(AI,Artificial Intelligence)。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语言和图像识别方面取得的效果,远远超过先前相关技术。它在搜索技术、数据挖掘、机器学习、机器翻译、自然语言处理、多媒体学习、语音、推荐和个性化技术,以及其它相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。
    在所用的结构中使用DNN的原因是,DNN是唯一可以在任何类型(有监督的和无监督的)任何地方(星座整形器,信道估计器和检测器)应用的机器学习算法。例如,即使支持向量机(它是有监督的二进制分类器),尽管其检测性能良好,但也不能应用于星座整形器或信道估计器等其他部分(因为这两个部分是无监督的。DNN是光学通信中使用最广泛的深度学习技术,并且是传统方法的适当替代方法。DNN的复杂度低,响应速度快。它可以建模复杂的多维非线性关系。由于这些优点,在FSO中应用DNN进行星座整形,信道估计和检测可以显着降低复杂性,成本,等待时间和处理,同时保持系统性能。

      深度神经网络的内部神经网络有3层,第一层输入,最后一层输出,其余中间都是隐藏层,层与层之间全连接。在局部的小模型来讲和感知机是一样的,都是线性关系+激活函数,即

Layer 1: Layer 2:

Z[1] = W[1]·X + b[1] Z[2] = W[2]·A[1] + b[2]
A[1] = σ(Z[1]) A[2] = σ(Z[2])

X其实就是A[0],所以不难看出:

Layer i:
Z[i] = W[i]·A[i-1] + b[i]
A[i] = σ(Z[i])

(注:σ是sigmoid函数)

因此不管我们神经网络有几层,都是将上面过程的重复
2439500922d21a7feaf01169df7bc3f8_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

3.MATLAB核心程序
```for i = 1:length(SNRS);
i
L = 3;
SNR = SNRS(i);
P=[1+1i,1-1i,2-1i,1+2i]';

for i=1:20000
    hh     = randn(3,1)+1i*randn(3,1);
    yy     = comsystem(P,L,hh,SNR);

    h(:,i) = hh;
    y(:,i) = yy;
end
n         = size(y,2);
indim     = size(y,1);
outdim    = size(h,1);

inputdim  = indim*2;
outputdim = outdim*2;

realy     = real(y);
imagy     = imag(y);

yy        = zeros(inputdim,n);

yy(1:2:inputdim-1,:) = realy;
yy(2:2:inputdim,:)   = imagy;

realh     = real(h);
imagh     = imag(h);

hh        = zeros(outputdim,n);

hh(1:2:outputdim-1,:) = realh;
hh(2:2:outputdim,:)   = imagh;

%Normalization
din      = min(yy')';
Tdin     = max(yy')';
trainYY  = yy;

for i = 1:n
    tmp          = yy(:,i);
    tmp          = (tmp-din)./(Tdin-din);
    trainYY(:,i) = tmp;
end

dout   = min(hh')';
Tdout  = max(hh')';

trainHH = hh;
for i = 1:n
    tmp          = hh(:,i);
    tmp          = (tmp-dout)./(Tdout-dout);
    trainHH(:,i) = tmp;
end


pr      = zeros(inputdim,2);
pr(:,1) = 0;
pr(:,2) = 1;
hiden   = 18;



net = newff(pr,[hiden,outputdim],{'logsig','purelin'},'trainlm');
net.trainParam.lr=0.01;
net.trainParam.goal=1e-5;
net.trainParam.epochs=40;
net=train(net,trainYY,trainHH);

if SNR==1
   save dat\DNN_SNR1.mat net din Tdin dout Tdout
end
if SNR==2
   save dat\DNN_SNR2.mat net din Tdin dout Tdout
end
if SNR==3
   save dat\DNN_SNR3.mat net din Tdin dout Tdout
end
if SNR==4
   save dat\DNN_SNR4.mat net din Tdin dout Tdout
end
if SNR==5
   save dat\DNN_SNR5.mat net din Tdin dout Tdout
end
if SNR==6
   save dat\DNN_SNR6.mat net din Tdin dout Tdout
end
if SNR==7
   save dat\DNN_SNR7.mat net din Tdin dout Tdout
end
if SNR==8
   save dat\DNN_SNR8.mat net din Tdin dout Tdout
end
if SNR==9
   save dat\DNN_SNR9.mat net din Tdin dout Tdout
end
if SNR==10
   save dat\DNN_SNR10.mat net din Tdin dout Tdout
end

if SNR==11
   save dat\DNN_SNR11.mat net din Tdin dout Tdout
end
if SNR==12
   save dat\DNN_SNR12.mat net din Tdin dout Tdout
end
if SNR==13
   save dat\DNN_SNR13.mat net din Tdin dout Tdout
end
if SNR==14
   save dat\DNN_SNR14.mat net din Tdin dout Tdout
end
if SNR==15
   save dat\DNN_SNR15.mat net din Tdin dout Tdout
end
if SNR==16
   save dat\DNN_SNR16.mat net din Tdin dout Tdout
end
if SNR==17
   save dat\DNN_SNR17.mat net din Tdin dout Tdout
end
if SNR==18
   save dat\DNN_SNR18.mat net din Tdin dout Tdout
end
if SNR==19
   save dat\DNN_SNR19.mat net din Tdin dout Tdout
end
if SNR==20
   save dat\DNN_SNR20.mat net din Tdin dout Tdout
end

end
```

相关文章
|
2月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
103 0
|
2月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
203 2
|
1月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
268 0
|
1月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
117 0
|
1月前
|
传感器 机器学习/深度学习 数据采集
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
157 0
|
1月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
存储 负载均衡 Dubbo
分布式-Zookeeper(一)
分布式-Zookeeper(一)
|
11月前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论

热门文章

最新文章