奇异值分解MVDR算法功率谱估计MATLAB完整程序分享

news2024/11/25 12:37:56

clear ;close all;clc;

产生输入信号

N = 1024;               %样本点数
snr=[20 25 30];         %信噪比
n=0:N-1;                %数据轴
g=100;                  %蒙特卡诺仿真次数
M=14;                   %阶数
Pmvdr_s=zeros(3,1024);  %存放MVDR谱
signal1 = exp(1i*0.15*2*pi*n + 1i*2*pi*rand);
signal2 = exp(1i*0.25*2*pi*n + 1i*2*pi*rand);
signal3 = exp(1i*0.30*2*pi*n + 1i*2*pi*rand);
Un = signal1 + signal2 + signal3;

蒙特卡诺仿真

for i=1:3
    for k=1:g
        un=awgn(Un,snr(i),'measured');
        %% SVD
        A=zeros(M,N-M+1);       %构造数据矩阵
        for n=1:N-M+1
            A(:,n)=un(M+n-1:-1:n);
        end
        [U,S,V]=svd(A');
        invphi=V*inv(S'*S)*V';  %类似于自相关矩阵逆矩阵
        %% 计算MVDR谱
        P = 1024;               %MVDR扫描点数
        f=linspace(-0.5,0.5,P); %频率轴
        omega=2*pi*f;           %归一化角频率
        a=zeros(M,P);           %频率导向矢量
        for kk=1:P
            for m=1:M
                a(m,kk)=exp(-1j*omega(kk)*(m-1));
            end
        end
        Pmvdr=zeros(1,P);       %MVDR谱
        for kk=1:P
            Pmvdr(kk)=1/(a(:,kk)'*invphi*a(:,kk));
        end
        Pmvdr=10*log10(abs(Pmvdr/max(abs(Pmvdr))));
        Pmvdr_s(i,:) =Pmvdr_s(i,:)+Pmvdr;
    end
end
Pmvdr_s=Pmvdr_s/g;

绘图

figure;
hold on
plot(f,Pmvdr_s(1,:));
plot(f,Pmvdr_s(2,:));
plot(f,Pmvdr_s(3,:));
hold off
xlabel('w/2Π');ylabel('归一化功率谱 (dB)');
legend('SNR=20','SNR=25','SNR=30');
title('MVDRSVD频率估计方法');
grid on

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle-DG备库应用查询不到数据问题处理

背景: 一套准备上线的Oracle 11G RAC主备集群,应用报告说部分模块测试发现在备库查不到新插入的数据,而且问题发生的频率很高,需确认主备之间同步是否存在问题,此套主备之间同步采用SYNCAFFIRM模式 问题分析: 接到问题之后&#…

2022(二等奖)C2464植物保护管理系统

作品介绍 一、需求分析 1. 应用背景 森林是陆地生态系统的主体,是人类生存与发展的物质基础。以森林为主要经营对象的林业,不仅承担着生态建设的主要任务,而且承担着提供多种林产品的重大使命。进入21世纪,人类正在继农业文明和…

libevent(12)bufferevent的基础知识

一、bufferevent的基本概念 bufferevent 是 libevent 中的一个事件缓冲 IO,内部实现了基本 socket recv/send 操作 ,用户只需要调用 bufferevent 的 API 即可实现数据的读写。 (1)缓冲区:每个 bufferevent 都有一个读…

Effective第三版 中英 | 避免使用终结方法和清理方法

文章目录 Effective第三版前言避免使用终结方法和清理方法(Avoid finalizers and cleaners)总结 Effective第三版 前言 大家好,这里是 Rocky 编程日记 ,喜欢后端架构及中间件源码,目前正在阅读 effective-java 书籍。…

基于SpringBoot+vue的家乡特色推荐系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【C语言督学训练营 第十五天】常用的查找算法----顺序查找、二分查找、二叉排序树

文章目录 前言一、顺序查找1,思想2.代码实战 二、二分查找1.思想2.代码实战 三、二叉排序树1.建树思想2.删除节点思想3.代码实战 考研真题实战 前言 本篇博客会介绍到数据结构中常用到的查找算法,合理的使用查找算法可以让我们很轻松找到自己想要的答案。本小节必须…

Java异常面试题

什么是Java异常机制 Java异常机制是java语言为我们提供一种异常处理机制,在java语言中,异常本身是一个类,产生异常就是创建异常对象并抛出这个异常对象,程序发生异常情况之后程序会抛出封装了错误信息的异常对象,程序…

python-线性规划

线性规划:定义:1 线性规划(Linear programming,简称LP),是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,是辅助人们进行科学管理的一种数学方法,是研究线性约束条件下线性…

WPF 零基础入门笔记(2):控件模板+数据模版

文章目录 文章合集地址WPF控价模版解决重复嵌套标签书写的问题实战 WPF数据绑定解决界面和业务数据沟通的问题 WPF数据模版数据模板解决数据的样式设置(以CellTemplate为例)数据模板和控件模板的区别ItemTemplate 元素模板ItemTemplate是用于绝大部分控件…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN ? 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

UFS 13 - Logical Unit Management

UFS 13 - Logical Unit Management 1 Introduction2 Logical Unit features3 Logical Unit Configuration 基于UFS 3.1 标准文档阐述 UFS 1-UFS架构简介1 UFS 2 -UFS架构简介2 UFS 3 - UFS RPMB UFS 4 - UFS Boot UFS 5 - UFS UIC Layer: MIPI M-PHY UFS 6 - UAP – SCSI Comma…

机器人工程创新类课程补充说明-2023-2

仅供参考 之前一篇:机器人工程创新类课程补充说明-2023- 自主学习→自主研究→自主创新,这是一个循序渐进的过程,着急没用的,大部分学生,都卡在第一个阶段,自主学习的效率比较低,并且成果不突出…

【C++ 程序设计】第 6 章:多态与虚函数

目录 一、多态的基本概念 (1)多态 (2)虚函数 (3)通过基类指针实现多态 (4)通过基类引用实现多态 (5)* 多态的实现原理 二、多态实例 三、多态的使用 …

docker启动的jenkins拉取gitee项目构建并部署

docker启动的jenkins拉取gitee项目构建并部署 docker 拉取jenkins https://hub.docker.com/r可以search不同的jenkins版本docker pull jenkins/jenkins创建挂载目录 /home/jenkins_home加权限chmod 777 /home/jenkins_homedocker run -di --namejenkins -p 9999:8080 -v /hom…

【json-server】centos线上环境搭建全攻略

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ 安装json-server安装nvm安装node安装json-server 2️⃣ json-server 使用创建json数据踩坑:指定host关闭防火墙云后台修改安全组规则最终命令行 🛬 结论📖 参考资料 🛫 问题 描述 开…

【虚拟机搭建-VMware设置固定IP】VMWare中CentOS如何设置固定IP【不成功手把手教学】

背景 在日常工作学习中(比如博主在之前学习k8s过程中,windows本地搭建虚拟机,重启windows后)虚拟机的IP会发生变化,所以该篇文章详细记录VMWare中CentOS如何设置固定IP 虚拟机安装 参考: https://rundr…

尚硅谷Docker2022版学习笔记(基础篇 上)

目录 一、Docker简介 1.1、是什么? 问题:为什么会有Docker出现? Docker理念 一句话 1.2、容器与虚拟机比较 传统虚拟机技术 容器虚拟机技术 容器虚拟机技术 1.3、去哪下? 二、Docker安装 2.1、前提说明 2.2、Docker的…

Rust语言从入门到入坑——(8)Rust泛型与特性

文章目录 0、引入1、泛型1.1、在函数中使用1.2、在结构体中使用 2、特性2.1 默认特性2.2 特性做参数2.3 特性做返回值2.4 有条件实现方法 3、总结 0、引入 泛型是一个编程语言不可或缺的机制。 C 语言中用"模板"来实现泛型,而 C 语言中没有泛型的机制&am…

MySQL数据库——备份与恢复

MySQL数据库——备份与恢复 一、数据备份的重要性二 、数据库备份的分类和备份策略1 数据库备份的分类2 数据库的备份策略3常见的备份方法 三、MySQL完全备份1 什么是完全备份2 完全备份的优缺点3 完全备份的方法 四、完全备份的操作1.物理冷备份与恢复2.mysqldump 备份与恢复3…

Arduino IDE 2.1.0 下安装ESP32

很久没玩Arduino了。新装了一台电脑,想重新捡起ESP32-WROOM-32开发板玩玩。官网上下了Arduino IDE 2.1.0,然后配置ESP32开发环境。 下载及安装Arduino IDE略过不谈。装完后还是老规矩,文件 -> 首选项,先把自定义板管理地址填入…