改进型MUSIC算法(IMUSIC)用来估计相干信号,通过对阵列输出的协方差矩阵进行处理,转化为Toeplitz矩阵,实现信号的DOA估计。

该算法程序比较简单,核心内容就是一个矩阵转换公式,

其中代表原协方差矩阵,代表重构的Toeplitz矩阵,表示反单位矩阵。

import numpy as np
import scipy.signal as ss
import scipy.linalg as LA
import matplotlib.pyplot as pltdef awgn(x, snr):spower = np.sum((np.abs(x) ** 2)) / x.sizex = x + np.sqrt(spower / snr) * (np.random.randn(x.shape[0], x.shape[1]) + 1j * np.random.randn(x.shape[0], x.shape[1]))return xderad = np.pi / 180
radeg = 180 / np.pi
d = np.arange(0,4,0.5)
theta = np.array([10,30,60]).reshape(1,-1)
n=500
snr = 10
iwave = theta.sizedef coherent_signal_Rxx(d, theta, n, snr):A = np.exp(-1j * 2 * np.pi * d.reshape(-1, 1) @ np.sin(theta * derad))S = np.random.randn(iwave-1, n)S = np.concatenate((S[0,:].reshape(1,-1),S), axis=0)X = A @ SX = awgn(X, snr)Rxx = X @ (X.conj().T) / nreturn Rxxdef IMUSIC(Rxx, iwave, d):K = Rxx.shape[0]J = np.flip(np.eye(K),axis=0)Rxx = Rxx + J@Rxx.conj()@JD, EV = LA.eig(Rxx)index = np.argsort(D)  # ascending order indexEN = EV[:, index][:, 0:K - iwave]  #Angles = np.linspace(-np.pi / 2, np.pi / 2, 360)numAngles = Angles.sizeSP = np.empty(numAngles, dtype=complex)for i in range(numAngles):a = np.exp(-1j * 2 * np.pi * d.reshape(-1, 1)[0:K] * np.sin(Angles[i]))SP[i] = ((a.conj().T @ a) / (a.conj().T @ EN @ EN.conj().T @ a))[0, 0]SP = np.abs(SP)SPmax = np.max(SP)SP = 10 * np.log10(SP / SPmax)x = Angles * radegreturn x, SPco_Rxx = coherent_signal_Rxx(d=d,theta=theta,n=n,snr=snr)
x, SP = IMUSIC(Rxx=co_Rxx,iwave=iwave,d=d)
plt.plot(x, SP)
plt.show()

改进型MUSIC算法(python)相关推荐

  1. 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现

    Dijkstra 最短路径算法 Python 实现 问题描述 使用 Dijkstra 算法求图中的任意顶点到其它顶点的最短路径(求出需要经过那些点以及最短距离). 以下图为例: 算法思想 可以使用二维 ...

  2. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  3. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  4. 最优化算法python实现篇(4)——无约束多维极值(梯度下降法)

    最优化算法python实现篇(4)--无约束多维极值(梯度下降法) 摘要 算法简介 注意事项 算法适用性 python实现 实例运行结果 算法过程可视化 摘要 本文介绍了多维无约束极值优化算法中的梯度 ...

  5. 最优化算法python实现篇(3)——无约束一维极值(黄金分割法)

    最优化算法python实现篇(3)--无约束一维极值(黄金分割法) 算法适用问题 python实现 示例运行结果 算法适用问题 搜索给定单峰区间的极值问题,一般对凸优化问题比较适用. python实现 ...

  6. 最优化算法python实现篇(2)—无约束一维极值(二分法)

    最优化算法python实现篇(2)--无约束一维极值(二分法) 算法适用问题 python实现 示例运行结果 算法适用问题 搜索给定单峰区间的极值问题,一般对凸优化问题比较适用. python实现 # ...

  7. 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归

    1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...

  8. 哈希运算python实现_一致性哈希算法 python实现

    # -*- coding: utf-8 -*- """ 一致性哈希算法 python实现 参考 http://weblogs.java.net/blog/2007/11/ ...

  9. (四)协同过滤算法之基于用户的推荐算法python实现

    一.背景 关于推荐算法的相关背景介绍,已经在上一个姊妹篇(三)协同过滤算法之基于物品的推荐算法python实现中有所介绍.在此,便不在赘述,本文主要介绍基于用户的协同过滤算法,而对推荐算法不太清楚的朋 ...

  10. list 排序_十个必知的排序算法|Python实例系列

    十大排序: 1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序8.计数排序9.桶排序10.基数排序 完整代码和注释如下 # -*- coding: UTF-8 -*-# ...

最新文章

  1. 被追捧为“圣杯”的深度强化学习已走进死胡同
  2. 发掘数据中的信息 -- 数据探索之描述性统计
  3. 计算二叉排序树的平均查找长度
  4. Java学习笔记13(equals()方法;toString()方法)
  5. 第十八讲 傅里叶变换
  6. 数据库基础之一--DDL(数据库定义语言),DCL(数据库控制语言)
  7. Linux 常用命令:文本查看篇
  8. IntelliJ IDEA 工具篇之如何切换 git 分支
  9. python3 常见命令
  10. HDU 5570:balls 期望。。。。。。。。。。。。。。。
  11. Atitit path query 路径查询语言 数据检索语言 目录 1.1. List map spel 1 1.2. Html数据 》》Css选择符 1 1.3. Json 》map》
  12. 状态反馈控制与状态观测器设置以及利用LQR方法求取状态反馈矩阵
  13. pr踩点插件beat edit安装教程
  14. google官方权限申请库EasyPermissions使用方法
  15. 网站被攻击了怎么办?
  16. 【 MATLAB 】mod 函数介绍
  17. SAM4E单片机之旅——20、DMAC之使用Multi-buffer进行内存拷贝
  18. leetcode954.二倍数对数组C++(绝对值排序)
  19. 并查集的一些个人观点 以及克鲁斯卡尔算法的详解
  20. C++学习(一一七)pdb文件

热门文章

  1. 安装 Linux双系统
  2. 安装程序提示本地计算机已存在源,MSI文件安装错误码不再烦
  3. TigerGraph集群安装
  4. 输入九九乘法表c语言,九九乘法表的输入(c语言)
  5. DB9 公头母头引脚定义及连接、封装
  6. 爱企人事工资管理系统 v8.1 免费下载
  7. win7 java下载_Windows7系统下JAVA运行环境下载、安装和设置(第二次更新:2012年03月14日)...
  8. win10 安装SQL Server 2005
  9. Ubuntu - 安装gcc
  10. jQuery 下载与安装教程