数字信号谱估计方法对比仿真——估计自相关,周期图法,协方差法,burg算法,修正协方差法

2023-10-30

目录

一、理论基础

1.1自相关谱估计

1.2周期图法谱估计

1.3协方差法谱估计

1.4burg算法谱估计

1.5修正协方差谱估计

二、核心程序

三、仿真结论


一、理论基础

       自相关谱估计、周期图法谱估计、协方差法谱估计、Burg算法谱估计和修正协方差谱估计是常见的信号谱估计方法,用于分析信号的频谱信息。本文将详细介绍这几种方法的原理和特点。

1.1自相关谱估计

       自相关谱估计是一种最简单的谱估计方法,它基于信号的自相关函数来估计信号的频谱。自相关函数表示信号与其自身经过一定时间延迟后的相似程度,其峰值对应于信号的周期,因此可以用于估计信号的频率成分。
自相关谱估计的具体步骤如下:
计算信号的自相关函数。
对自相关函数进行傅里叶变换,得到信号的频谱。
自相关谱估计的优点是计算简单,但其缺点是精度较低,对噪声敏感。

1.2周期图法谱估计

       周期图法谱估计是一种基于周期性信号模型的谱估计方法。它认为信号是由若干个周期信号叠加而成,因此可以通过将信号分解为多个周期信号,并对每个周期信号进行傅里叶变换,得到信号的频谱。具体来说,周期图法谱估计的步骤如下:
将信号分解为若干个周期信号,例如通过将信号按照周期长度进行切分。
对每个周期信号进行傅里叶变换,得到周期信号的频谱。
将所有周期信号的频谱叠加起来,得到信号的频谱估计结果。
周期图法谱估计的优点是对周期性信号估计精度高,但其缺点是对非周期性信号估计精度较低。

1.3协方差法谱估计

       协方差法谱估计是一种基于统计模型的谱估计方法,它认为信号是一个随机过程,可以通过计算信号的样本协方差函数来估计信号的频谱。具体来说,协方差法谱估计的步骤如下:
计算信号的样本协方差函数。
对协方差函数进行傅里叶变换,得到信号的频谱估计结果。
协方差法谱估计的优点是精度较高,但其缺点是计算复杂度较高。

1.4burg算法谱估计

       Burg算法谱估计是一种基于递归最小二乘法的谱估计方法,它通过迭代计算自回归(AR)模型的系数来估计信号的频谱。具体来说,Burg算法谱估计的步骤如下:
初始化AR模型的系数。
计算AR模型的预测误差和功率谱。
更新AR模型的系数,使预测误差和功率谱最小。
重复步骤2和步骤3,直到收敛。
Burg算法谱估计的优点是精度较高,但其缺点是计算复杂度较高,且对噪声敏感。

1.5修正协方差谱估计


        修正协方差谱估计是一种基于协方差法谱估计的改进方法,它通过对协方差函数进行修正,来提高谱估计的精度。具体来说,修正协方差谱估计的步骤如下:
计算信号的样本协方差函数。
对协方差函数进行修正,例如通过对协方差函数进行平滑、截断等操作。
对修正后的协方差函数进行傅里叶变换,得到信号的频谱估计结果。
修正协方差谱估计的优点是精度较高,且对噪声不敏感,但其缺点是需要对协方差函数进行修正,且修正方法的选择可能影响谱估计结果。

二、核心程序

 

%画图
figure(2);
stem(rx_d,'r');
title('估计自相关与真实自相关比较');
xlabel('n');
ylabel('rx');
grid on;
hold on;
stem(rx0,'b');
legend('估计自相关','真实自相关');


%用x进行功率谱估计,即周期图法
p0 = fft(xn,512);
p0 = p0(1:N);
p0 = (abs(p0)).^2./length(xn);
p0 = 10*log10(p0);

 
%自相关法
[a1,err1]=acm(xn,4);
p1 = estm_p(sqrt(err1),a1);

%协方差法
[a2,err2]=covm(xn,4);
p2 = estm_p(sqrt(err2),a2);

%burg算法
[g3,err3]=burg(xn,4);
a3 = gtoa(g3);
p3 = estm_p(sqrt(err3),a3);


%修正协方差法
[a4,err4]=mcov(xn,4);
p4 = estm_p(sqrt(err4),a4);

%画图比较
f=1./N:1./N:1;
figure(3);
plot(f,p0,f,p1,f,p);
title('自相关法与周期图法比较');
xlabel('归一化频率(pi)');
ylabel('功率谱(db)');
grid on;
legend('周期图法','自相关法','真实功率谱');

figure(4);
plot(f,p0,f,p2,f,p);
title('协方差法与周期图法比较');
xlabel('归一化频率(pi)');
ylabel('功率谱(db)');
grid on;
legend('周期图法','协方差法','真实功率谱');

figure(5);
plot(f,p0,f,p3,f,p);
title('burg算法与周期图法比较');
xlabel('归一化频率(pi)');
ylabel('功率谱(db)');
grid on;
legend('周期图法','burg算法','真实功率谱');

figure(6);
plot(f,p0,f,p4,f,p);
title('修正协方差法与周期图法比较');
xlabel('归一化频率(pi)');
ylabel('功率谱(db)');
grid on;
legend('周期图法','修正协方差法','真实功率谱');

figure(7);
plot(f,p0,f,p1,f,p2,f,p3,f,p4,f,p);
title('各种谱估计法比较');
xlabel('归一化频率(pi)');
ylabel('功率谱(db)');
grid on;
legend('周期图法','自相关法','协方差法','burg算法','修正协方差法','真实功率谱');
UP188

三、仿真结论

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字信号谱估计方法对比仿真——估计自相关,周期图法,协方差法,burg算法,修正协方差法 的相关文章

  • 一次分配多个字段的聪明方法?

    由于遗留函数调用 我有时被迫编写像这样的丑陋的包装器 function return someWrapper someField a someField a b someField b and so on realistically it
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 将自动生成的 Matlab 文档导出为 html

    我想为我开发的 Matlab 工具箱生成完整的帮助 我已经看到如何显示自定义文档 http www mathworks fr fr help matlab matlab prog display custom documentation h
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和
  • Matlab 字段名索引[重复]

    这个问题在这里已经有答案了 所以我有一个包含多个表的元胞数组 我试图访问表的第一个列名称 c table1 table2 table3 以下两行都给了我错误 fieldnames c 1 1 fieldnames c 1 1 Error i
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题

随机推荐

  • 数据库的部分依赖,完全依赖,传递依赖以及三种范式

    第一范式1NF 列不可再分 关系模式R都是不可分 第二范式2NF 满足完全依赖 可唯一标识一行 如主键id 消除部分依赖 如果依赖于主属性的非空真子集 那么就不满足完全依赖 要拆分成一对多的关系 第三范式3NF 不存在传递依赖 不依赖于非主
  • JSR303校验之list校验问题

    现有需求如下 新增合同时要保存补贴和费用项信息 由于都是多条 所以用list传参 但不是必传项 不传的时候不校验list中的对象 传的时候就要校验list中对象每个字段都不能为空 也就是要通过JSR303实现 当请求对象中传list 需要校
  • Springboot 多数据源配置

    Springboot 多数据源配置 前几天工作中遇到个项目说出来比较恶心 对接老系统要求一个项目连接多个数据库 Oracle Mysql SqlServer 这个时候看了一些方式写了一套多数据源常用的方式 将代码分享出来 后续会将代码整体迁
  • CSS —— 盒模型

    概念 CSS 盒模型本质上是一个盒子 盒子包裹着HTML 元素 盒子由四个属性组成 从内到外分别是 content 内容 padding 内填充 border 边框 外边距 margin 盒模型的分类 W3C 盒子模型 标准盒模型 IE盒子
  • Unity之性能分析特别篇

    Unity的性能优化大家一定很熟悉了 我在Unity4 5的时期 做过多款大型在线射击对战类网游 超大地形加载优化 对性能分析优化工作和在使用Profiler的过程中总结了一些经验 今天才有空分享出来 欢迎大家讨论 和提出不同的见解 给Un
  • 无法访问javax.servlet.ServletException

    使用Idea CE 创建了一个基于 Maven 构建的 Spring Boot 项目 在打包的时候提示 无法访问javax servlet ServletException 完整错误信息 ERROR Failed to execute go
  • Spring3学习笔记之(spring core之IoC容器基本原理)

    IoC容器的概念 IoC容器就是具有依赖注入功能的容器 IoC容器负责实例化 定位 配置应用程序中的对象及建立这些对象间的依赖 应用程序无需直接在代码中new相关的对象 应用程序由IoC容器进行组装 在Spring中BeanFactory是
  • C++ “error LNK1169: 找到一个或多个多重定义的符号”的解决方法

    原文链接 https blog csdn net m LeonWANG article details 37598807 这是一个链接时候检查到的错误 大概有下面两种情况会引起这个错误 第一种 1 变量定义 A h中声明了变量a 非类成员变
  • Kylin问题解决

    1 libLLVM 7 so不是符号链接 root t60 ldconfig v ldconfig usr lib64 libLLVM 7 so 不是符号链接 解 root t60 ln sf usr lib64 libLLVM 7 0 0
  • eKuiper 1.10.0 发布:定时规则和 EdgeX v3 适配

    经过为期两个月的开发 我们很高兴地宣布 eKuiper 1 10 0 现已正式发布 作为一个里程碑版本 eKuiper 1 10 0 升级了基础依赖的版本 如 Go 语言版本升级到 1 20 EdgeX 支持最新的大版本 Minnesota
  • layui自定义打印

    效果图如下 自定义内容导出 自定义表格导出 目录 一 自带的打印功能的实现 1 下载新的layui的js文件 2 添加toolbar参数 3 最终打印图标显示 4 点击打印图标 实现打印效果 5 隐藏打印功能 二 自定义打印内容的实现 1
  • nginx proxy_pass规则

    文章目录 nginx部分配置格式 proxy pass规则 1 proxy pass不带url情况 2 proxy pass带url情况 总结 以下附带一个简单的伪代码 新领悟 nginx部分配置格式 server listen 5000
  • 大数据从入门到精通(超详细版)之Hive的DQL操作,学不会算我输!!!

    前言 嗨 各位小伙伴 恭喜大家学习到这里 不知道关于大数据前面的知识遗忘程度怎么样了 又或者是对大数据后面的知识是否感兴趣 本文是 大数据从入门到精通 超详细版 的一部分 小伙伴们如果对此感谢兴趣的话 推荐大家按照大数据学习路径开始学习哦
  • 达梦实现高可用性的实现(failover功能/负载均衡/虚拟ip透明切换)

    达梦实现高可用性的实现 failover功能 负载均衡 虚拟ip透明切换 一 failover功能 基于守护进程和监视器两个内在工具实现 守护进程 监视器 数据守护和读写分离集群 共享存储集群 二 负载均衡 基于jdbc接口和客户端实现读写
  • XSS-Game level 11

    第十一关通过 Referer 利用事件绕过 先看源码 本关有三个参数 keyword 使用 htmlspecialchars 转译 并输出到页面 难度较大 第二个参数 t sort 使用 htmlspecialchars 转译后拼接到 va
  • Dubbo服务控制台Dubbo Admin配置

    Dubbo服务使用Zookeeper作为服务注册中心 Zookeeper对我们来讲是一个黑框 我们无法看到是否存在了什么提供者或消费者 阿里巴巴官方提供了一个Dubbo服务的管理平台Dubbo Admin 提供路由规则 动态配置 服务降级
  • 开源中国iOS客户端学习——(十二)用户登陆

    上一篇博客 开源中国iOS客户端学习 十一 AES加密 中提到将用户名和密码保存到了本地沙盒之中 在从本地读取用户名和密码 这是一个怎样的过程 cpp view plain copy void saveUserNameAndPwd NSSt
  • 《wireshark》怎么抓包

    wireshark是非常流行的网络封包分析软件 功能十分强大 可以截取各种网络封包 显示网络封包的详细信息 可能很多朋友还不知道wireshark怎么抓包 为此小编给大家带来了wireshark抓包教程 不知道的朋友一起来看看吧 iresh
  • leetcode zigzag C++ 争取每日一题,我还是太天真了/(ㄒoㄒ)/~~

    include
  • 数字信号谱估计方法对比仿真——估计自相关,周期图法,协方差法,burg算法,修正协方差法

    目录 一 理论基础 1 1自相关谱估计 1 2周期图法谱估计 1 3协方差法谱估计 1 4burg算法谱估计 1 5修正协方差谱估计 二 核心程序 三 仿真结论 一 理论基础 自相关谱估计 周期图法谱估计 协方差法谱估计 Burg算法谱估计