多传感器时频信号处理:多通道非平稳数据的分析工具(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🌈3 Matlab代码实现
🎉4 参考文献
💥1 概述
本文可塑造性强。 本文介绍了高分辨率多传感器时频分布(MTFD)及其在多通道非平稳信号分析中的应用。该方法结合了高分辨率时频分析和阵列信号处理方法。MTFD的性能通过多种应用进行了演示,包括基于到达方向(DOA)估计的源定位和非平稳源的自动组分分离(ACS),重点是盲源分离。MTFD方法通过脑电图信号的两个应用进一步说明。一种专门使用 ACS 和 DOA 估计方法进行伪影去除和源定位。另一种使用MTFD进行跨渠道因果关系分析。本文可以换上自己的数据,并将这些方法实现。
📚2 运行结果
部分代码:
clear; close all; clc;
addpath(genpath('Supporting functions'));
%% Main
%% Extracting SNR information from Data Folders
S = dir('../data/DOA Data');
SNR_N = sum([S(~ismember({S.name},{'.','..'})).isdir]);
SNR_i = zeros(1,SNR_N);
for i = 1:SNR_N
[~, r1] = strtok(S(7+i).name);
[s1, rrr] = strtok(r1);
SNR_i(1,i) = str2double(s1);
end
SNR_i = sort(SNR_i);
%% MUSIC and TF-MUSIC Spectrum
SNR_N = 2;
figure('Color',[1 1 1],'Position',[100, 70, 900 500]);
ha = tight_subplot(SNR_N/2,2,[0.05 0.01],[0.12 0.12],[0.08 0.08]);
for i = 1:SNR_N
Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
load([Path '/Averaged_Spectrum']);
axes(ha(i));
plot(theta, P_tf_music_avg,'-b','linewidth',2); hold on;
plot(theta, P_music_avg,'-.r','linewidth',2); hold on;
plot(repmat(ra(1),10),linspace(0,1.2,10),'k--','linewidth',2); hold on
plot(repmat(ra(2),10),linspace(0,1.2,10),'k--','linewidth',2); grid on
axis([0 39.9 0 1.2])
if(mod(i,2) && i < SNR_N-1)
set(gca,'XTickLabel','','fontweight','bold','fontsize',13);
ylabel('P_M_U_S_I_C (\theta)','Fontsize',16);
title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
elseif i == SNR_N-1
set(gca,'fontweight','bold','fontsize',13);
ylabel('P_M_U_S_I_C (\theta)','Fontsize',16);
xlabel('\theta (deg)','Fontsize',16);
title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
elseif i == SNR_N
set(gca,'YTickLabel','','fontweight','bold','fontsize',13);
xlabel('\theta (deg)','Fontsize',16);
title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
legend('TF-MUSIC Averaged Spectrum','MUSIC Averaged Spectrum','True Angles','Location','Southwest')
else
set(gca,'XTickLabel','','YTickLabel','','fontweight','bold');
title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
end
end
set(gcf,'Units','inches'); screenposition = get(gcf,'Position');
set(gcf,'PaperPosition',[0 0 screenposition(3:4)],'PaperSize',screenposition(3:4));
%% DOA NMSE
SNR_N = sum([S(~ismember({S.name},{'.','..'})).isdir]);
Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
load([Path '/DOA'],'ra');
nmse_music = zeros(length(ra), SNR_N);
nmse_tf_music = zeros(length(ra), SNR_N);
nmse_esprit = zeros(length(ra), SNR_N);
nmse_tf_esprit = zeros(length(ra), SNR_N);
music_rate = zeros(length(ra), SNR_N);
tf_music_rate = zeros(length(ra), SNR_N);
for i = 1:SNR_N
Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
load([Path '/DOA']);
for j = 1:length(ra)
temp1 = DOA_music(:,j); temp2 = DOA_tf_music(:,j);
music_rate(j,i) = sum(temp1~=0)/length(temp1);
tf_music_rate(j,i) = sum(temp2~=0)/length(temp2);
temp1 = temp1(temp1~=0); temp2 = temp2(temp2~=0);
nmse_music(j,i) = (mean(((temp1 - ra(j))/ra(j)).^2));
nmse_tf_music(j,i) = (mean(((temp2 - ra(j))/ra(j)).^2));
nmse_esprit(j,i) = (mean(((DOA_esprit(:,j) - ra(j))/ra(j)).^2));
nmse_tf_esprit(j,i) = (mean(((DOA_tf_esprit(:,j) - ra(j))/ra(j)).^2));
end
end
fprintf(2,'Mean Probability of Detection (Pd)\n');
fprintf('MUSIC : %0.3f\n',mean(mean(music_rate)));
fprintf('TF_MUSIC : %0.3f\n',mean(mean(tf_music_rate)))
fprintf('ESPRIT : %0.1f\n',1)
fprintf('TF_ESPRIT : %0.1f\n',1)
figure('Color',[1 1 1],'Position',[100, 10, 650, 550]);
ha = tight_subplot(1,1,[0.01 0.01],[0.12 0.1],[0.12 0.12]);
axes(ha(1));
plot(SNR_i,10*log10(mean(nmse_tf_music)),'-b','linewidth',2); hold on;
plot(SNR_i,10*log10(mean(nmse_music)),'--b','linewidth',2); hold on;
plot(SNR_i,10*log10(mean(nmse_tf_esprit)),'-.r','linewidth',2); hold on;
plot(SNR_i,10*log10(mean(nmse_esprit)),':r','linewidth',2); grid on;
xlim([SNR_i(1) SNR_i(end)]);
legend('TF-MUSIC','MUSIC','TF-ESPRIT','ESPRIT','Location','Southwest');
set(gca,'fontweight','bold','fontsize',14);
title('DOA Normalized Mean Square Error','fontsize',18);
xlabel('SNR (dB)'); ylabel('NMSE (dB)');
set(gcf,'Units','inches'); screenposition = get(gcf,'Position');
set(gcf,'PaperPosition',[0 0 screenposition(3:4)],'PaperSize',screenposition(3:4));
%% DOA PDFs
SNR_N = 2;
bins_N = 100;
for i = 1:SNR_N
aa= figure('Color',[1 1 1],'Position',[100, 0, 650, 700]);
ha = tight_subplot(2,1,[0.01 0.01],[0.1 0.1],[0.05 0.05]);
Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
load([Path '/DOA']);
axes(ha(1)); temp = DOA_music; temp = temp(temp~=0);
histogram(temp, bins_N,'Normalization','probability','facecolor',[1 0.84 0],'linewidth',1.2); hold on;
temp = DOA_tf_music; temp = temp(temp~=0);
histogram(temp, bins_N,'Normalization','probability',...
'facecolor',[1 0 0],'linewidth',1.2); xlim([0 40]);
temp1 = DOA_music(:,1); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
temp1 = DOA_music(:,2); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
tag1 = [' MUSIC' char(10) tag11 char(10) tag12];
temp1 = DOA_tf_music(:,1); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
temp1 = DOA_tf_music(:,2); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
tag2 = [' TF-MUSIC' char(10) tag11 char(10) tag12];
legend(tag1, tag2,'Location','Northwest'); grid on;
set(gca,'XTickLabel','','YTickLabel','','fontweight','bold','fontsize',13);
title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
axes(ha(2));
histogram(DOA_esprit, bins_N,'Normalization','probability',...
'facecolor',[0 0.5 0],'linewidth',1.2); hold on;
histogram(DOA_tf_esprit, bins_N,'Normalization','probability',...
'facecolor',[0 0.45 0.74],'linewidth',1.2); xlim([0 40]);
temp1 = DOA_esprit(:,1); u1 = mean(temp1); s = std(temp1);
tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
temp1 = DOA_esprit(:,2); u1 = mean(temp1); s = std(temp1);
tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
tag1 = [' ESPRIT' char(10) tag11 char(10) tag12];
temp1 = DOA_tf_esprit(:,1); u1 = mean(temp1); s = std(temp1);
tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
temp1 = DOA_tf_esprit(:,2); u1 = mean(temp1); s = std(temp1);
tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
tag2 = [' TF-ESPRIT' char(10) tag11 char(10) tag12];
legend(tag1, tag2,'Location','Northwest'); grid on;
set(gca,'YTickLabel','','fontweight','bold','fontsize',13);
xlabel('\theta (deg)');
set(gcf,'Units','inches'); screenposition = get(gcf,'Position');
set(gcf,'PaperPosition',[0 0 screenposition(3:4)],'PaperSize',screenposition(3:4));
end
🌈3 Matlab代码实现
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1] B. Boashash, A. Aissa-El-Bey, M. F. Al-Sa'd, Multisensor Time-Frequency Signal Processing:
A tutorial review with illustrations in selected application areas, Digital Signal Processing, In Press.
[2] B. Boashash, A. Aissa-El-Bey, M. F. Al-Sa'd, Multisensor time-frequency signal processing software Matlab package: An analysis tool for multichannel non-stationary data , SoftwareX, In Press.
相关文章:
多传感器时频信号处理:多通道非平稳数据的分析工具(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
数据结构算法 -分而治之算法
引言 坤坤是一个养鸡场的员工,他非常热爱他的工作,并且总是努力提高他的专业技能。有一天,养鸡场接到了一项任务:在短时间内处理一批大量的鸡。 这批鸡数量非常大,比普通的数量要多得多,坤坤意识到他们需…...
涉密信息系统口令管理制度
第一条 口令是涉密信息系统身份认证的基本防护措施,为保障 涉密信息系统的安全运行,规范网络用户及系统口令,特制定本制度。 第二条 具有口令功能的计算机、网络设备等计算机信息系统设 备,必须使用口令对用户的身份进行验证…...
UML与流程图
UML简介 UML(Unified Modeling Language,统一建模语言)是一种用于软件系统分析与设计的标准化建模语言。它提供了一套丰富的图形符号和规则,可用于描述系统的结构、行为和交互,帮助开发人员、设计师和利益相关者之间进…...
音视频开发Level0: 入门级20~25k的工作
今天给大家分享一个音视频开发领域,入门级别的工作,要求不高。 主要做什么呢,行车记录仪,运动相机,各种拍摄器材包括医疗领域的喉镜啊,等等。 这种产品,招人的公司深圳最多,因为深…...
Git第一章、Git的原理与使用
目录 一、Git安装 1.1Linux Centos安装 二、Git基本操作 2.1创建 Git 本地仓库 2.2配置Git 三、认识工作区、暂存区、版本库 3.1添加文件(场景一) 3.2修改文件 3.3版本回退 四、撤销修改 4.1情况一:对于工作区的代码,还…...
软件开发流程
目录 软件软件开发流程的演变 瀑布模型敏捷模型 XPSCRUMDevOps 1.软件 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。 软件可以分为两种主要类型: 独立软件:独立软件是一种完整的应用程序,可以直接在计算机或移动设备上…...
编程语言的优劣评选标准与未来发展趋势——探索最佳编程语言选择
编程语言的优劣评选标准与未来发展趋势——探索最佳编程语言选择 评判标准不同编程语言的优点与缺点分析对编程语言未来发展的猜测和未来趋势 💕 💕 💕 博主个人主页: 汴京城下君–野生程序员💕 💕 &#x…...
axios 发送请求请求头信息不包含Cookie信息
问题 axios 发送请求请求头信息不包含Cookie信息 详细问题 使用VueSpringBoot进行项目开发,axios进行网络请求,发送请求,请求头信息不包含Cookie信息 具体如下 实际效果 预期效果 解决方案 作用域 Vue项目全局配置 打开Vue项目的入口…...
正则表达式笔记
/你的正则表达式写在这里/ 1? 1出现0次或1次 1* 1出现0次或多次 1 1出现1次或多次 1{2} 1出现了2次 1{2,3} 1出现了2到3次 1{2,} 1出现了2次及以上 (5555){1} 5555出现了1次 (dog|cat) dog或者cat [a-zA-Z] a…...
数据结构链表(C语言实现)
绪论 机遇对于有准备的头脑有特别的亲和力。本章将讲写到链表其中主要将写到单链表和带头双向循环链表的如何实现。 话不多说安全带系好,发车啦(建议电脑观看)。 附:红色,部分为重点部分;蓝颜色为需要记忆的…...
Springboot实现接口传输加解密
前言 先给大家看下效果,原本我们的请求是这样子的 加密后的数据传输是这样子的 加解密步骤: 1.前端请求前进行加密,然后发送到后端 2.后端收到请求后解密 3.后端返回数据前进行加密 4.前端拿到加密串后,解密数据 加解密算法&…...
TypeScript类型系统:强类型的优势和使用方式
目录 引言强类型的优势更好的代码可读性更好的代码可维护性更好的代码重构能力更好的代码可靠性更好的代码重用能力 使用方式声明变量类型函数参数和返回值类型类型别名泛型类型(了解) 总结 引言 在上一篇文章《TypeScript入门指南:从JS到TS的…...
有没有可以代替风铃系统的专业问卷工具?
风铃系统问卷是一种流行的调查和数据分析工具,已广泛应用于学术研究、市场营销和社会科学。然而,有几种替代产品提供了与风铃系统类似的特性和功能,可以被企业用来进行调查和分析数据。在这篇文章中,我们将介绍风铃系统的十大替代…...
【数字调制】数字调制技术FSK与PSK分析与研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
html实现好看的个人介绍,个人主页模板4(附源码)
文章目录 1.设计来源1.1 主界面1.2 我的文章界面1.3 我的相册界面1.4 关于我界面1.5 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.2 源代码目录 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/131265259 …...
内存不够用,那你的内存去哪了?
一、前言 近几年开发了一些大型的应用程序,在程序性能调优或者解决一些疑难杂症问题的过程中,遇到最多的还是与内存相关的一些问题。例如glibc内存分配器ptmalloc,google的内存分配器tcmalloc都存在“内存泄漏”,即内存不归还操作…...
哈希表--day4--(leetcode202/leetcode1/leetcode454)
文章目录 leetcode202. 快乐数基本思路AC-code leetcode1. 两数之和基本思路AC-code 454.四数相加II基本思路AC-code leetcode202. 快乐数 链接 基本思路 实际上题目隐藏着一个小细节,就是告诉你会发生无限循环,那我们该如何跳出这个无限循环就是一个…...
基于Python+Django+mysql+html通讯录管理系统
基于PythonDjangomysqlhtml通讯录管理系统 一、系统介绍二、功能展示1.用户登陆2.用户注册3.密码修改4.查询5.添加6.修改7.删除 三、其它系统四、获取源码 一、系统介绍 该系统实现了 用户登陆、用户注册、密码修改、查询信息、添加信息,修改信息、删除信息 运行环…...
Rabbitmq学习
文章目录 前言RabbitMQ 1 同步调用和异步调用2 常见的MQ对比3 安装RabbitMQ4 RabbitMQ学习4.1 helloworld学习 5 Spring AMQP5.1 AMQP的入门案例(使用rabbittemplate进行消息发送和接受)5.2 RabbitMQ的workquene5.3 发布订阅模型(exchange(广播fanout 路由direct 话题topic))5.…...
初识轻量级分布式任务调度平台 xxl-job
文章目录 前言xxl-job的目录结构项目依赖 (父 pom.xml)xxl-job-admin 启动xxl-job-executor-sample (项目使用示例)xxl-job-executor-sample-frameless : 不使用框架的接入方式案例xxl-job-executor-sample-springboot : springboot接入方案案例 xxl-job执行器器启动流程分析调…...
web 语音通话 jssip
先把封装好的地址安上(非本人封装):webrtc-webphone: 基于JsSIP开发的webrtc软电话 jssip中文文档:jssip中文开发文档(完整版) - 简书 jssip使用文档:(我没有运行过,但…...
随风摇曳的她——美蕨(matlab实现)
目录 1 随风摇曳的她 2 摇曳带来的哲思 3 Matlab代码实现 1 随风摇曳的她 梦幻的场景、浪漫的气息,带上心爱的人,拥抱在这片花海之下,便有了电影男女主角的氛围感; 就算阅尽了世间风貌,也抵不上和她在一起时锦短情长&a…...
时序数据库的流计算支持
一、时序数据及其特点 时序数据(Time Series Data)是基于相对稳定频率持续产生的一系列指标监测数据,比如一年内的道琼斯指数、一天内不同时间点的测量气温等。时序数据有以下几个特点: 历史数据的不变性数据的有效性数据的时效…...
springboot启动流程 (3) 自动装配
在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。 本文将详细分析该注解的工作流程。 EnableAutoConfiguration注解 启用SpringBoot自动装配功能,尝试猜测和配置可能需要的组件Bean。 自动装配类通常是根据类路径和定义的Bean来应…...
ansible-roles模块
roles用于层次性,结构化地组织playbook,roles能够根据层次型结构自动装载变量文件,tasks以及handlers等。要使用只要载playbook中使用include指令引入即可。 (roles就是通过分别将变量,文件,任务ÿ…...
聊聊我做 NeRF-3D重建性能优化经历
我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。 本文为此系列第四篇…...
未磁科技全球首台64通道无液氦心磁图仪及首个培训基地落户北京安贞医院
【全球首台64通道无液氦心磁图仪在北京安贞医院举行开机仪式】 近日,在北京安贞医院举行了未磁科技全球首台64通道无液氦心磁图仪开机仪式,中国医学装备协会赵自林理事长、北京安贞医院纪智礼书记、张宏家院长、宋现涛教授,以及未磁科技蔡宾…...
SpringBoot 如何使用 ApplicationEventPublisher 发布事件
SpringBoot 如何使用 ApplicationEventPublisher 发布事件 在 SpringBoot 应用程序中,我们可以使用 ApplicationEventPublisher 接口来发布事件。事件可以是任何对象,当该对象被发布时,所有监听该事件的监听器都会收到通知。 下面是一个简单…...
【深度学习】2-3 神经网络-输出层设计
前馈神经网络(Feedforward Neural Network),之前介绍的单层感知机、多层感知机等都属于前馈神经网络,它之所以称为前馈(Feedforward),或许与其信息往前流有关:数据从输入开始,流过中间计算过程,最后达到输出…...
公司部门团建活动策划方案/深圳百度推广排名优化
数据结构有八大类 1、数组2、栈3、队列4、链表5、树6、散列表7、堆8、图链表基本操作:头位置添加、头位置删除、任意位置添加、任意位置删除、根据下标查找节点、根据数据查找节点、获取长度、打印所有节点 package com.autumn.LinkedList;/*** 节点*/ class Node{p…...
外贸自己做网站/网站推广的几种方法
GPFS centos7部署实战准备工作(每个节点)安装(每个节点)创建集群(管理节点)准备工作(每个节点)集群时间同步yum install -y ntpdatentpdate ntp.sjtu.edu.cn关闭不必要的服务systemctl stop firewalldsystemctl disable firewalldsystemctl stop NetworkManagersystemctl disab…...
网站建设项目报价/今日特大军事新闻
推荐资料 https://www.cnblogs.com/xiaokang01/p/9865724.html socket传输文件 思路:# 先将报头转换成字符串(json.dumps), 再将字符串的长度打包# 发送报头长度,发送报头内容,最后放真是内容# 报头内容包括文件名,文件信息,报头# 接收时:先接收4个字节的报头长度,# …...
徐州做公司网站多少钱/网络营销是干什么的
虚拟机网卡桥接centos系统获取不到IP今天把虚拟机跟新到新的版本,发现虚拟机网卡桥接centos系统获取不到IP!在想更新过后有可能是恢复初始默认的了!所以就修改一下进去编辑一下:重启系统就可以了!转载于:https://blog.…...
加强学校就业信息网站建设和管理/店铺100个关键词
用Apache虚拟主机的朋友很多,apache提供的.htaccess模块可以为每个虚拟主机设定rewrite规则,这对网站SEO优化相当有用,同时也改善了用户体验。国内的虚拟机一般不提供.htaccess功能(据我所知,discuz的主机好像提供此功…...
wordpress 代购/百度地图推广电话
数据来源:《利用python进行数据分析》(第2版)MovieLens 1M数据集含有来⾃6000名⽤户对4000部电影的100 万条评分数据。它分为三个表:评分、⽤户信息和电影信息,现在分别将他们读到DataFrame中import numpy as np impo…...