基于导频的信道估计实现

news/2024/5/18 20:43:27/文章来源:https://blog.csdn.net/qq_45049500/article/details/127325967

目录

零、前言

一、为什么要信道估计

二、导频的概念

(1)为什么要有导频

(2)导频在信道估计中作用

(3)关于导频序列的补充

三、最小二乘法估计

(1)LS信道估计算法分析

(2)LS信道估计的特点

四、最小均方误差估计

(1)MMSE信道估计算法分析

 (2)MMSE信道估计特点

(3)关于公式的推导

五、简单运用

(一)MIMO_OFDM系统导频估计的MSE曲线图

(二)画出信噪比0:20下的误码率曲线

六、结果分析

(1)为啥要进行蒙特卡洛?

(2)五里面题目第一问:

(3)五里面题目第二问: 

 七、结尾


零、前言

     这是我研一通信系统仿真的专题答辩内容,就是当做笔记记录的,如果有内容上的错误请及时私信我,我会做出修改的,本文代码是可以用的,自己要多调试调试。

一、为什么要信道估计

       定义:用导频获取信道状态信息的这个过程就叫做信道估计。

       从上图可知,与单纯的OFDM模型相比在里面的OFDM信道模型明显多出了插入导频和信道估计这两个过程,所以我们现在要解决的问题是为什么要进行信道估计。以及导频是干啥的。

       信号在传输过程中会经历 1. 时间轴上的随机衰落(由于移动多普勒效应引起)见图2 2. 频率轴上的衰落(由于多径效应引起)。见图3

图2移动多普勒效应
图2移动多普勒效应
图3多径效应

      所以信道估计的目的,就是在于尽可能利用较少的,在时间方向和频率方向分布的pilot信号,对时间变化和频率变化进行抽样,然后利用这种对衰落已完备描述的抽样信息,经过滤波降噪和内插,恢复全频率(数据载波)的频率响应。信道估计基本的两种方法,一种是盲估计,一种是基于训练的估计,导频一般就应用在后者。

二、导频的概念

(1)为什么要有导频

       在正式发送数据之前,先给系统训练训练,让它知道周围的通讯环境是怎样的,然后在正式发送数据时,发射端就可以根据这些信息(称为信道状态信息)做出相应的调整,从而达到较好的通信性能。

(2)导频在信道估计中作用

       信道估计目前理解应该就是估计信道系数h,即如果发送信号已知,比如说x,理论上的接收信号应该是y=h*x+n,假设n=0,即不考虑噪声,那么信道系数就可以等于h=y/x。如果这个时候我们可以测量接收信号y^,那么就可以获得信道系数h^=y^/x。同时在一般使用中,我们强调导频都是一个序列,即一个已知序列,然后我们是采用相关的方法来进行上述的操作的。主要好处在于,首先相当于多个时刻的值做叠加,更稳定一些,同时由于噪声与设置的序列一般是无关的,那么其相关值即趋近与0,所以也能够避免噪声的干扰,增加准确性。

(3)关于导频序列的补充

       在802.11协议中,基本都是固定子载波作为导频,并且用其作为信道估计。同时除了导频,802.11协议中也会采用LTF(长训练字段)做一个粗估计,方法也是同样采用固定的序列。 在LTE中,导频貌似和参考信号RS是一样的,尤其是小区专用参考信号CRS。 同时有关导频的内容在5G里面也比较被关注,其主要在于导频污染这个话题上。由于解调信号我们需要知道信道系数,同时信道系数就是利用导频所获得,如果导频互相干扰,那么就会严重通信质量。导频污染主要是由于不同的导频序列不正交导致(学术点可以认为序列间的汉明距离比较小),从而不同的序列做相关互相干扰,从而不能够很好估计信道。

三、最小二乘法估计

(1)LS信道估计算法分析

        LS算法就是在不考虑噪声的条件下,估计信道的冲击响应向量hLS=[h0,h1,…,hN-1]T,使其代价函数最小。LS估计器的代价函数定义如下:

(2)LS信道估计的特点

        LS信道估计的特点是简单,但是从其代价函数可以看出,在找最优解时没有考虑接收信号中的噪声及子载波间的干扰,因为这种算法估计出的信道对接收信号进行抽头复系数均衡时,输出信号的均方误差较大,准确度受到限制。

四、最小均方误差估计

(1)MMSE信道估计算法分析

         MMSE信道估计算法对于ICI(子载波间干扰)和高斯白噪声有很好的抑制作用,它是在LS估计的基础上进行的:

 (2)MMSE信道估计特点

           MMSE算法的运算量要比LS算法大的多,随子载波数N呈指数增长,并需随导频信号X的变化实时进行矩阵的逆运算((XXH)一1),导致系统效率很低。

(3)关于公式的推导

        关于最小均方误差的公式推导,下面评论区链接提供了两种方法,感兴趣的可以自己去看。

五、简单运用

(一)MIMO_OFDM系统导频估计的MSE曲线图

         请画出在信噪比从0-20dB下,MIMO_OFDM系统中随机导频序列设计的导频估计的MSE(Mean Square Error)曲线图。

要求:

1.MSE:h的估计值与h的期望值间差值的二范数,在循环多次下的均值(随着信噪比变化,求出误差,画出来)

2. OFDM块长(傅里叶变换长度)与各用户信道的多径数之和应存在什么关系?(ppt上回答,与最小二乘有关,看有没有唯一解)答:“各用户的多径数之和<=OFDM块长”才是正确答案,这涉及到的是未知数和方程个数之间的关系。

代码:

clc
clear all;
close all;
NBlock=50;
WN=exp(-j*2*pi/NBlock);    %DFT 离散傅里叶变换for n=1:NBlockfor k=1:NBlockDFTMatrix(k,n)=WN^((n-1)*(k-1)); %傅里叶变换矩阵构造end
end
for i=1:7X(:,i)=randn(NBlock,1);
end%%用户数为7,并根据信道参数构造A
h1=[0.7;0.5;0.3;];
h2=[0.7;0.5;0.3;];
h3=[0.4;0.6;0.1;];
h4=[0.3;0.4;];
h5=[0.3;0.5;0.7;];
h6=[0.1;0.6;0.1;];
h7=[0.7;0.4;0.2;];
A=[diag(X(:,1))*DFTMatrix(:,1:length(h1)) diag(X(:,2))*DFTMatrix(:,1:length(h2)) diag(X(:,3))*DFTMatrix(:,1:length(h3)) diag(X(:,4))*DFTMatrix(:,1:length(h4)) diag(X(:,5))*DFTMatrix(:,1:length(h5)) diag(X(:,6))*DFTMatrix(:,1:length(h6)) diag(X(:,7))*DFTMatrix(:,1:length(h7))];
XMse(:,1)=zeros(NBlock,1)+1;
for K=1:NBlockXMse(K,2)=exp(-j*2*pi*(length(h1))*(K-1)/NBlock);
end
for K=1:NBlockXMse(K,3)=exp(-j*2*pi*(length(h1)+length(h2))*(K-1)/NBlock);
end
for K=1:NBlockXMse(K,4)=exp(-j*2*pi*(length(h1)+length(h2)+length(h3))*(K-1)/NBlock);
end
for K=1:NBlockXMse(K,5)=exp(-j*2*pi*(length(h1)+length(h2)+length(h3)+length(h4))*(K-1)/NBlock);
end
for K=1:NBlockXMse(K,6)=exp(-j*2*pi*(length(h1)+length(h2)+length(h3)+length(h4)+length(h5))*(K-1)/NBlock);
end
for K=1:NBlockXMse(K,7)=exp(-j*2*pi*(length(h1)+length(h2)+length(h3)+length(h4)+length(h5)+length(6))*(K-1)/NBlock);
end
AMse=[diag(XMse(:,1))*DFTMatrix(:,1:length(h1))   diag(XMse(:,2))*DFTMatrix(:,1:length(h2))  diag(XMse(:,3))*DFTMatrix(:,1:length(h3))  diag(XMse(:,4))*DFTMatrix(:,1:length(h4))  diag(XMse(:,5))*DFTMatrix(:,1:length(h5))  diag(XMse(:,6))*DFTMatrix(:,1:length(h6))  diag(XMse(:,7))*DFTMatrix(:,1:length(h7))  ];%%随机导频
h=[h1;h2;h3;h4;h5;h6;h7];
for i=1:800
for snr=0:20Y=A*h;Y=awgn(Y,snr,'measured');hEst=pinv(A)*Y;  %信道估计% LS_MSE(snr+1)= norm(hEst-mean(hEst*(1:length(hEst))))./21; LS_MSE(snr+1,i)= norm((hEst)-h',2)/100; 
end
end
LS_MSE800=mean( LS_MSE,2);%%正交导频for i=1:800
for snr=0:20
YMse=AMse*h;
YMse=awgn(YMse,snr,'measured');
hEstMse=pinv(AMse)*YMse;%信道估计h 
%MMSE_MSE(snr+1)= norm(hEstMse-mean(hEstMse*(1:length(hEstMse))))./21; MMSE_MSE(snr+1,i)= norm((hEstMse)-h',2)/100; 
end
%MMSE_MSE()end
MMSE_MSE800=mean( MMSE_MSE,2);
figure(1);
semilogy(0:20,LS_MSE800,'b-o',0:20,MMSE_MSE800,'r-*');
legend('随机导频','正交导频');
title('Mse与snr的关系图');
xlabel('snr');
ylabel('Mse');

(二)画出信噪比0:20下的误码率曲线

根据估计出的信道,将信号进行解调,画出信噪比0:20下的误码率曲线。(仅限于SISO_ofdm系统下的随机导频和正交导频)(注:在单输入单输出下)

要求:不能用if或case语句判决。

代码:

clc
clear all;
close all;num=8000; 
x_int=randi(8,num,1)-1; % 随机产生800个8进制整数
plot(x_int,'*');
for m=1:8psk(m,1)=cos(11*pi/8-(m-1)*pi/4)+i*sin(11*pi/8-(m-1)*pi/4);
end
x=psk(x_int+1);% 8psk调制 x是x_int调制后的信号
BlockLength=8;
NBlock=8;WN=exp(-j*2*pi/NBlock);    %DFT 离散傅里叶变换for n=1:NBlockfor k=1:NBlockDFTMatrix(k,n)=WN^((n-1)*(k-1)); %傅里叶变换矩阵构造end
endh=[0.8;0.5;0.3;0.15;0.1;0.05];
BER_R=[];
%%随机导频信道估计for i=1:100
for snr=0:30X(:,1)=randn(NBlock,1);A=[diag(X(:,1))*DFTMatrix(:,1:length(h))];Y=A*h;Y=awgn(Y,snr,'measured');hEst=pinv(A)*Y;  %信道估计hy_awgn=awgn(x,snr,'measured');y_multipath=conv(x,h);for n=1:num/BlockLengthy_ofdm((n-1)*BlockLength+1:n*BlockLength,1)=OFDM(x((n-1)*BlockLength+1:n*BlockLength),h);% 经过ofdm调制endy_ofdm=awgn(y_ofdm,snr,'measured');HEst=fft([hEst;zeros(BlockLength-length(hEst),1)]);for n=1:num/BlockLengthy_demod((n-1)*BlockLength+1:n*BlockLength)=y_ofdm((n-1)*BlockLength+1:n*BlockLength)./HEst;end%%系统判决
s=[0:BlockLength-1];
wholey_demod=[]; 
for mn=1:numwholeD=[];for m=1:BlockLength       D=norm((y_demod(mn)-psk(m)),2); wholeD=[wholeD,D];enddom=min(wholeD);w=find(wholeD==min(wholeD));y_demod(mn)=s(w);wholey_demod=[wholey_demod,y_demod(mn)];
end
wholey_demod1=wholey_demod';
symble_error=sum(not(wholey_demod1==x_int));
SER1=symble_error/num;
BER_R(i,snr+1)=SER1;%[BER_R,SER1];endendBER_R800=mean(BER_R,1);%%正交导频信道估计
BER_Q=[];
for i=1:100
for snr=0:30XMse(:,1)=zeros(NBlock,1)+1;AMse=[diag(XMse(:,1))*DFTMatrix(:,1:length(h))];
YMse=AMse*h;
YMse=awgn(YMse,snr,'measured');
hEstMse=pinv(AMse)*YMse;%信道估计hy_awgn=awgn(x,snr,'measured');y_multipath=conv(x,h);for n=1:num/BlockLengthy_ofdm((n-1)*BlockLength+1:n*BlockLength,1)=OFDM(x((n-1)*BlockLength+1:n*BlockLength),h);% 经过ofdm调制endy_ofdm=awgn(y_ofdm,snr,'measured');HEstMse=fft([hEstMse;zeros(BlockLength-length(hEstMse),1)]);for n=1:num/BlockLengthy_demod((n-1)*BlockLength+1:n*BlockLength)=y_ofdm((n-1)*BlockLength+1:n*BlockLength)./HEstMse;end%%系统判决
s=[0:BlockLength-1];
wholey_demod=[]; 
for mn=1:numwholeD=[];for m=1:BlockLength       D=norm((y_demod(mn)-psk(m)),2); wholeD=[wholeD,D];enddom=min(wholeD);w=find(wholeD==min(wholeD));y_demod(mn)=s(w);wholey_demod=[wholey_demod,y_demod(mn)];
end
wholey_demod1=wholey_demod';
symble_error=sum(not(wholey_demod1==x_int));
SER1=symble_error/num;
BER_Q(i,snr+1)=SER1;
end
endBER_Q800=mean(BER_Q,1);
snr=0:30;figure(1);
semilogy(snr,BER_R800,'b-o',snr,BER_Q800,'r-*');
legend('随机导频','正交导频');
title('BER与snr的关系图');
xlabel('snr');
ylabel('BER');

六、结果分析

(1)为啥要进行蒙特卡洛?

     通过大量的重复实验把某一件事情发生的频率当作概率。 如果重复次数少得到的结论是非常不可靠的。

(2)五里面题目第一问:

信噪比0:20,用户数7,多径数20,蒙特卡洛100次

(3)五里面题目第二问: 

 

信噪比0:20,用户数1,多径数6,蒙特卡洛100次

 七、结尾

       利用MATLAB程序仿真实现了LS以及MMSE两种分别基于随机导频和正交导频的信道估计方法,  给出了两者的MSE及BER随信噪比变化的曲线。通过上面图片分析效果很明显,也不用多解释了,有什么疑问可以加我好友。我是一名热爱生活的通信汪,虽然生活很苦但是知识很甜,一起加油吧各位通信汪!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_23411.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24.登录form的显示

1.概括 本次博客的代码就不自己去写输入框了&#xff0c;直接去引用element官网中的就好。 具体如何实现可以去订阅Vue专栏中的最后两节课噢&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;2.操作方法 打开element官网 https://element.eleme.cn/…

TRC丨艾美捷TRC 那非那韦亚砜说明书

艾美捷TRC Nelfinavir Sulfoxide 是 Nelfinavir Mesylate (N389750) 的杂质。Nelfinavir USP 相关化合物 A。 艾美捷TRC 那非那韦亚砜化学性质&#xff1a; 目录号N389770 化学名称那非那韦亚砜 同义词(3S,4aS,8aS)-N-(1,1-二甲基乙基)十氢-2-[(2R,3R)-2-羟基-3-[(3-羟基-2-…

合宙AIR32F103CBT6刷回CMSIS-DAP固件以及刷ST-LINK V2-1固件方法

合宙AIR32F103CBT6刷回CMSIS DAP固件以及刷ST-LINK V2-1固件方法&#x1f4cc;官方介绍文档:https://wiki.luatos.com/chips/air32f103/index.html&#x1f4cd;原理图&#xff1a;https://cdn.openluat-luatcommunity.openluat.com/attachment/20220605164915340_AIR32CBT6.pd…

从零备战蓝桥杯——动态规划(递推篇)

双非刷leetcode备战2023年蓝桥杯&#xff0c;qwq加油吧&#xff0c;无论结果如何总会有收获&#xff01;一起加油,我是跟着英雄哥的那个思维导图刷leetcode的&#xff0c;大家也可以看看所有涉及到的题目用leetcode搜索就可以哦&#xff0c;因为避让添加外链&#xff0c;一起加…

简历石沉大海?来围观月薪 20k 的软件测试工程师真实简历...

​前言&#xff1a;面试的重要性 在互联网公司&#xff0c;你面试的时候能拿到多少 k 薪资&#xff0c;基本上决定了你未来 1-2 年的工资&#xff0c;这个非常现实。软件测试工程师在企业中俩内年想涨工资非常难的&#xff0c;就算有涨&#xff0c;涨幅也不大。当然不排除你待…

前置句与倒装句练习题

1. 特殊语序&#xff1a;前置 1.All the information you need I am putting in the post today. 2.Any item in our catelogue we can supply and deliver 3.How she got the gun through customs they never found out. 4.The kitchen we are planning to redecorate in the…

Day25Linux获取命令帮助,压缩与解压缩,vim编辑器使用,Linux系统下载软件,通过yum方式安装软件

命令字的帮助信息的查询 rm -fr fdisk -l ls ls -l ls -出现许多.开头的文件隐藏文件 Linux命令字格式 命令字 [选项] 命令字 [选项] 文件或目录 ls哪些选项&#xff1f; 1.如何查看一个命令字的帮助手册&#xff1f; man man ls 按q退出 ls -a显示隐藏文件 ls -l显示文件的详…

Chap4 循环结构 学习总结 第五小组

1、为什么需要循环?: 在 c语言中需要重复执行某些操作时,需要用到循环结构 2、循环的三个语句: for循环、while循环、do-while循环。 下列是while循环和for循环的流程图3、三种循环语句的表达式: (1)while(进入循环条件)循环体语句; (2)do {循环体语句;}while(进…

LVS负载均衡—DR模式

内容预知 1.DR模式的特点 2.LVS-DR中的ARP问题 2.1 问题一&#xff1a;VIP地址相同导致响应冲突 问题原因&#xff1a; 解决方法&#xff1a; 2.2 问题二&#xff1a;返回报文时源地址使用VIP&#xff0c;导致网关设备的ARP缓存表紊乱 问题原因&#xff1a; 解决方法&…

GitHub爆火,一份从零到1「架构师成长手册」,原来成为架构师也有捷径

架构师】我想应该没有哪个程序员会陌生了吧&#xff0c;作为一个程序员技术追求的里程碑&#xff0c;有多少程序员想转型架构师而不得门路&#xff0c;其实架构师比较抽象的拆解能力就两方面技术项目足够的技术栈深度和广度再加上足够的项目经验其实是完全可以驾驭架构师的岗位…

QFramework v1.0 使用指南 架构篇:05. 引入 Utility

05. 引入 Utility 在这一篇&#xff0c;我们来支持 CounterApp 的存储功能。 其代码也非常简单&#xff0c;只需要修改一部分 Model 的代码即可&#xff0c;如下&#xff1a; // 定义一个 Model 对象public class CounterAppModel : AbstractModel{private int mCount;public…

爬虫学习(01):了解爬虫超文本传输协议的理解

一、爬虫入门二、web请求过程(百度为例)2.1 页面渲染1. 服务器渲染 -> 数据直接在页面源代码里能搜到2. 前端JS渲染 -> 数据在页面源代码里搜不到三、浏览器工具的使用(重点)1. Elements2. Console3. Source4. Network四、超文本传输协议请求:响应:https协议加密方法(三种…

常见的网络安全风险有哪些?

常见的网络安全风险&#xff1a; 1、勒索软件 勒索软件(Ransomware&#xff0c;又称勒索病毒)是一种恶意软件&#xff0c;它的工作方式基本与计算机病毒类似&#xff0c;不过跟一般的计算机病毒不同&#xff0c;它们不会直接地破坏数据&#xff0c;而是将数据进行加密锁定&am…

搭建云上博客

安装apache: yum -y install httpd mod_ssl mod_perl mod_auth_mysql httpd -v systemctl start httpd.service Firefox ESR浏览器的址栏中&#xff0c;访问http://ECS公网地址。 安装MariaDB数据库: yum install -y mariadb-server systemctl start mariadb systemctl …

Day33、JavaScript

1、JavaScript 1.1、JavaScript组成 1.2、什么是ECMAScript 1&#xff09;ECMAScript是一种语法标准 语法、变量和数据类型、运算符、逻辑控制语句、关键字、保留字、对象 2&#xff09;编码遵循ECMAScript标准 1.3、什么是BOM 1&#xff09;BOM&#xff1a;Browser Object Mod…

leetcode 474一和零

一和零 动态规划&#xff08;01背包&#xff0c;三级数组&#xff09; 和经典的背包问题只有一种容量不同&#xff0c;这道题有两种容量&#xff0c;即选取的字符串子集中的 0 和 1 的数量上限。 经典的背包问题可以使用二维动态规划求解&#xff0c;两个维度分别是物品和容量…

DataFrame简介

dataframe是什么 DataFrame实质上是存储在不同节点计算机中的一张关系型数据表。分布式存储最大的好处是&#xff1a;可以让数据在不同的工作节点上并行存储&#xff0c;以便在需要数据的时候并行运算。 dataframe与RDD的关系 RDD是一种分布式弹性数据集&#xff0c;将数据分…

高项 案例分析重点知识 人力资源沟通干系人

七、人力资源管理 人力资源管理常见考点&#xff1a; 一、人力资源重要知识点&#xff08;人力资源管理计划、成功团队的特征、项目经理要求、权利的分类、激励理论等&#xff09; 二、人力资源常见问题及答题要点&#xff08;管理风格、领导关系、人员责职、项目经理任命、…

SAP LTO1创建转储 L_TO_CREATE_MULTIPLE 及前台操作

目录 LT01 转储前台操作 用L_TO_CREATE_MULTIPLE做转储 数据的传参 TRY-CATCH 异常捕获 代码展示 LT01 转储前台操作 首先输入T-CODE LT01 进入一下界面 如图所示输入必输项(数据用自个的) 然后回车 回车后会进入下面的界面输入从.......到目的地的数据,数量也要输 然…

保姆教程系列一:国产数据库达梦安装教程(DM)

系列文章目录 保姆教程系列一、国产达梦数据库安装教程 保姆教程系列二、国产数据库达梦无缝迁移 保姆教程系列三、国产数据库整合Spring boot 文章目录系列文章目录前言简介一、准备工作1.1 检查docker版本1.2 获取镜像二、运行初始化2.1 运行并初始化容器2.2 容器运行失败异常…