m基于RBF神经网络和BP神经网络的信道估计误码率matlab仿真

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: m基于RBF神经网络和BP神经网络的信道估计误码率matlab仿真

1.算法描述

    在无线通信系统中,从发射端发射的信号,经过直射、反射、散射等路径到达接收端。在ofdm系统中,为了获取更好的性能,需要进行信道估计获取信道的状态信息。ofdm技术虽然可以通过添加循环前缀的方式抑制多径效应产生的符号间干扰,但是却对高速移动产生的多普勒效应极其敏感。典型的信道估计方法包括最小二乘法和最小均方误差法,然而在系统发射端和接收端的相对移动速度较快时,这两种方法性能受限,而且忽略了高速移动时无线信道在时延-多普勒域上的稀疏性。对于高速移动的快时变信道导频位置处的信道响应,可以采用基扩展模型对信道进行建模,将复杂的快时变信道的参数估计简化为对少量的基函数系数的估计,并且可以基于快时变信道的稀疏性,使用压缩感知技术估计基函数系数。最后根据导频位置的信道响应通过插值法得到数据位置的信道响应。但是,由于高速移动中多普勒效应产生的子载波间干扰,会使数据位置的信道响应描述不准确,从而影响系统性能。

  人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

   生物神经网络主要是指人脑的神经网络,它是人工神经网络的技术原型。人脑是人类思维的物质基础,思维的功能定位在大脑皮层,后者含有大约10^11个神经元,每个神经元又通过神经突触与大约103个其它神经元相连,形成一个高度复杂高度灵活的动态网络。作为一门学科,生物神经网络主要研究人脑神经网络的结构、功能及其工作机制,意在探索人脑思维和智能活动的规律。人工神经网络是生物神经网络在某种简化意义下的技术复现,作为一门学科,它的主要任务是根据生物神经网络的原理和实际应用的需要建造实用的人工神经网络模型,设计相应的学习算法,模拟人脑的某种智能活动,然后在技术上实现出来用以解决实际问题。因此,生物神经网络主要研究智能的机理;人工神经网络主要研究智能机理的实现,两者相辅相成。

   常用的信道估计算法比如LS/ML估计,LMMSE估计都可以用,只是形式上有点变化。值得一提的是,在某种程度上其信道估计比平衰落信道中的窄带MIMO要容易。因为导频在空域的正交使得我们仅需要将多对收发天线考虑成多个单对收发天线即可,也就是说可以将MIMO系统变为SISO系统来分析。系统模型的接收端原理图如图所示。即各个接收天线收到相应的OFDM符号后,先进行时频同步处理,然后去掉相应的CP,接着进行OFDM解调(FFT),最后根据信道估计的结果进行检测解码,恢复出接收比特流。

image.png

    BP神经网络是一种具有一个输入层,一个或多个隐含层和一个输出层的多层网络。隐含层和输出层上的每个神经元都对应一个激发函数和一个阈值。每一层上的神经元都通过权重与其相邻层上的神经元相互连接。对于输入层上的神经元其阈值为零,其输出等于输入。图2为单隐含层的BP神经网络的一般结构。BP神经网络隐含层和输出层上的某神经元的输出由下式确定:

image.png

   BP算法所采用的学习过程(即权值调整过程)由信息的前向传播和误差的反向传播组成。在前向传播过程中,每一层神经元的状态只影响到下一层神经元网络。如果输出层不能得到期望输出,就是实际输出值与期望输出值之间有误差,那么转入反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,再经过前向传播过程,这两个过程的反复运用,使得误差信号最小。BP神经网络的隐节点采用输入模式与权向量的内积作为激活函数的自变量,而激活函数采用Sigmoid函数。各调参数对BP网络的输出具有同等地位的影响,因此BP神经网络是对非线性映射的全局逼近。

   RBF网络是一种三层前向网络,由输入到输出的映射是非线性的,而隐含层空间到输出空间的映射是线性的,从而大大加快了学习速度并避免局部极小问题。RBF网络结构如下图1所示。

image.png

  RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。其中,隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。这样,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。RBF神经网络的隐节点采用输入模式与中心向量的距离(如欧式距离)作为函数的自变量,并使用径向基函数(如Gaussian函数)作为激活函数。神经元的输入离径向基函数中心越远,神经元的激活程度就越低(高斯函数)。RBF网络的输出与部分调参数有关,譬如,一个wij值只影响一个yi的输出(参考上面第二章网络输出),RBF神经网络因此具有“局部映射”特性。

image.png
image.png

2.仿真效果预览
matlab2022a仿真结果如下:

image.png
image.png

3.MATLAB核心程序

    tt
    %产生二进制随即序列
    X                           = func_signal_gen(N_number,Carriers);
    %QPSK调制
    [X1,X_initial]              = func_QPSK(X,N_number);
    %导频
    [pilot,training_symbols]    = func_pilot(symbols_per_carrier,Np,interval,Carriers);
    %串并
    X2                          = reshape(X1,symbols_per_carrier,Carriers);
    %插入导频
    [X3,signal]                 = func_pilot_insert(X2,pilot,Carriers,Np,training_symbols);
    %IFFT
    IFFT_modulation             = zeros(symbols_per_carrier,IFFT_len);
    IFFT_modulation(:,carriers) = X3;
    X4                          = ifft(IFFT_modulation,IFFT_len,2);
    %加循环前缀
    X6                          = func_cp(X4,symbols_per_carrier,IFFT_len,Cps);
    %并串
    X7                          = reshape(X6.',1,symbols_per_carrier*(IFFT_len+Cps));
    %信道
    Tx_data                     = func_multipath_channel(X7,Carriers,IF_multi);
    %高斯白噪声
    Error_ber  = [];
    Error_mse  = [];
    
    for snr_db = SNR
%         RandStream.setDefaultStream(RandStream('mt19937ar','seed',tt));
        rng(tt) 
        code_power  = 0;
        code_power  = [norm(Tx_data)]^2/(length(Tx_data));
        bit_power   = code_power/bits_symbol; 
        noise_power = 10*log10((bit_power/(10^(snr_db/20))));
        noise       = wgn(1,length(Tx_data),noise_power,'complex');
        %最后接收到的信号
        Y7          = Tx_data + noise;
        %串并变换
        Y6          = reshape(Y7,IFFT_len+Cps,symbols_per_carrier).';
        %去保护间隔
        Y5          = func_cp_del(Y6,symbols_per_carrier,IFFT_len,Cps);
        %FFT,傅立叶变换
        Y4          = fft(Y5,IFFT_len,2);
        Y3          = Y4(:,carriers);
        
        
        %进行信道估计
        if sel == 1
            %实部
            [HLs_real,Y2_real] = func_RBF_channel_est(real(Y3),signal,pilot,symbols_per_carrier,Np,real(training_symbols),Carriers,interval);
            %虚部
            [HLs_imag,Y2_imag] = func_RBF_channel_est(imag(Y3),signal,pilot,symbols_per_carrier,Np,imag(training_symbols),Carriers,interval);
        end        
        if sel == 2
            %实部
            [HLs_real,Y2_real] = func_BP_channel_est(real(Y3),signal,pilot,symbols_per_carrier,Np,real(training_symbols),Carriers,interval);
            %虚部
            [HLs_imag,Y2_imag] = func_BP_channel_est(imag(Y3),signal,pilot,symbols_per_carrier,Np,imag(training_symbols),Carriers,interval);
        end
 
        Y1_real     = Y2_real./repmat(HLs_real,1,Carriers); 
        Y1_imag     = Y2_imag./repmat(HLs_imag,1,Carriers);   
        Y1          = Y1_real + sqrt(-1)*Y1_imag;
 
        YY1         = reshape(Y1,N_number/bits_symbol,1);
        %QPSK解调
        [y_real1,y_image1,y_re1,y_im1] = func_deqpsk(YY1);
        r01 = [];
        r11 = [];
        for k=1:length(y_re1);
            r11 = [r11,[y_re1(k),y_im1(k)]];
        end
        
        dif_bit1        = (X_initial - r11); 
 
        ber_snr1=0;
        for k=1:N_number;
            if dif_bit1(k)~=0;
               ber_snr1=ber_snr1+1;
           end
        end
     Error_ber = [Error_ber,ber_snr1];
     Error_mse = [Error_mse,mse(X_initial - r11)]; 
    end
    BERs(:,tt) = Error_ber./N_number;
    MSEs(:,tt) = Error_mse;
end
 
Ber_avg = mean(BERs,2);
MSE_avg = mean(MSEs,2);
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
10天前
|
传感器 算法 vr&ar
六自由度Stewart控制系统matlab仿真,带GUI界面
六自由度Stewart平台控制系统是一种高精度、高稳定性的运动模拟装置,广泛应用于飞行模拟、汽车驾驶模拟、虚拟现实等领域。该系统通过六个独立的线性致动器连接固定基座与移动平台,实现对负载在三维空间内的六个自由度(三维平移X、Y、Z和三维旋转-roll、pitch、yaw)的精确控制。系统使用MATLAB2022a进行仿真和控制算法开发,核心程序包括滑块回调函数和创建函数,用于实时调整平台的位置和姿态。
|
4天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
5天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
3天前
|
算法
基于HASM模型的高精度建模matlab仿真
本课题使用HASM进行高精度建模,介绍HASM模型及其简化实现方法。HASM模型基于层次化与自适应统计思想,通过多层结构捕捉不同尺度特征,自适应调整参数,适用于大规模、高维度数据的分析与预测。MATLAB2022A版本运行测试,展示运行结果。
|
6天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。
|
4天前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
5天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。
|
5天前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
22 3
|
10天前
|
机器学习/深度学习 算法 调度
基于ACO蚁群优化的VRPSD问题求解matlab仿真,输出规划路径结果和满载率
基于ACO蚁群优化的VRPSD问题求解MATLAB仿真,输出ACO优化的收敛曲线、规划路径结果及每条路径的满载率。在MATLAB2022a版本中运行,展示了优化过程和最终路径规划结果。核心程序通过迭代搜索最优路径,更新信息素矩阵,确保找到满足客户需求且总行程成本最小的车辆调度方案。
|
8天前
|
机器学习/深度学习 存储 算法
基于Actor-Critic(A2C)强化学习的四旋翼无人机飞行控制系统matlab仿真
基于Actor-Critic强化学习的四旋翼无人机飞行控制系统,通过构建策略网络和价值网络学习最优控制策略。MATLAB 2022a仿真结果显示,该方法在复杂环境中表现出色。核心代码包括加载训练好的模型、设置仿真参数、运行仿真并绘制结果图表。仿真操作步骤可参考配套视频。
26 0

热门文章

最新文章

下一篇
无影云桌面