基于simulink使用麦克风阵列的声波束成形

news2025/1/17 6:05:47

一、前言

此示例演示如何对麦克风阵列接收到的信号进行波束化,以在嘈杂环境中提取所需的语音信号。

二、模型的结构

该模型模拟在 10 元件均匀线性麦克风阵列 (ULA) 上接收来自不同方向的三个音频信号。在接收器处添加热噪声后,应用波束成形并在声音设备上播放结果。

该模型由两个阶段组成:模拟接收到的音频信号并对结果进行波束形成。对应于模型每个阶段的块是:

2.1 接收的音频模拟

  • Audio Sources- 子系统读取音频文件并指定其方向。

  • From Multimedia File- 子系统的一部分,每个块从不同的 wav 文件中读取音频,一次 1000 个样本。三个块标记为 ,并对应于三个源。Audio Sourcessource1source2source3

  • Concatenate- 将三个块的输出连接成一个三列矩阵,每个音频信号一列。From Multimedia File

  • source angles - Constant块 指定音频源到块的事件方向。该块输出一个 2x3 矩阵。两行对应于每个源的方位角和仰角(以度为单位),三列对应于三个音频信号。Wideband Rx Array

  • Wideband Rx Array- 模拟在ULA接收的音频信号。此块的第一个输入端口是 1000x3 矩阵。每列对应于每个音频信号的接收样本。第二个输入端口 (Ang) 指定脉冲的入射方向。Ang 的第一行指定每个信号的方位角(以度为单位),第二行指定每个信号的仰角(以度为单位)。第二行是可选的。如果未指定,则假定仰角为 0 度。此块的输出是一个 1000x10 矩阵。每列对应于在麦克风阵列的每个元素上录制的音频。话筒阵列的配置在块对话框面板的选项卡中指定。此配置应与 的块对话框面板上指定的配置匹配。

  • Receiver Preamp- 在接收到的信号中添加白噪声。

2.2 波束成形

  • Select beamform angle - Constant块控制输出,并指定要进行波束成形的三个源方向中的哪一个。Multi-Port Switch

  • Frost Beamformer- 沿输入端口指定的方向对通过输入端口传递的矩阵执行 Frost 波束成形。XAng

  • 2-D Selector- 选择其中一个麦克风元件的接收信号。

  • Manual switch- 在发送到音频设备的非波束成形音频流和波束成形音频流之间切换。

三、示例

在运行模拟时单击 ,可在播放非波束成形音频流和波束成形流之间切换。运行仿真时,在块中设置值 1、2 或 3 将沿三个音频信号方向之一进行波束成形。您会注意到非波束成形音频听起来乱码,而波束成形后您可以清楚地听到任何一个选定的音频流。

四、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

打开下面的“XXX.m”文件,点击运行,就可以看到上述效果。

程序下载:https://download.csdn.net/download/weixin_45770896/87666422

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

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

相关文章

如何利用 Playwright 对已打开的浏览器进行爬虫!

大家好,我是安果! 之前写过一篇关于如何利用 Selenium 操作已经打开的浏览器进行爬虫的文章 如何利用 Selenium 对已打开的浏览器进行爬虫! 最近发现很多人都开始摒弃 Selenium,全面拥抱 Playwright 了,那如何利用 Pla…

经典文献阅读之--Point-LIO(鲁棒高带宽激光惯性里程计)

0. 简介 在我们之前接触的算法中,基本上都是要处理帧间雷达畸变的,类似于VSLAM系统,频率固定(例如10Hz), 而实际上,激光雷达点是按照不同的时间瞬间顺序采样的,将这些点累积到帧中会引入人工运动畸变&…

3_机器学习数学基础知识

文章目录 一、偏导数二、目标函数(损失函数)求解方法2.1 梯度下降法2.2 坐标轴下降法2.2.1 坐标轴下降法算法公式2.2.2 坐标轴下降法算法过程 2.3 坐标轴下降法和梯度下降法的区别 三、概率3.1 大数定律、中心极限定理3.2 最大似然函数3.3 概率知识3.3.1…

windows下python下载及安装

下载python安装包 进入python官网:https://www.python.org/ 鼠标移动到“Downloads”->"Windows"上,可以看到最新版本是3.11.3版本 点击“Windows”按钮,可以去下载其他版本 标记为embeddable package的表示嵌入式版本&#x…

MyBatis:使用到的代码整理

文章目录 MyBatis:Day 04框架1. 依赖:pom.xml2. 外部配置文件:db.properties3. 核心配置文件:mybatis-config.xml4. 工具类:MybatisUtils.java5. 实体类6. 接口:xxxMapper.java7. 实现类:xxxMap…

[数据库系统] 三、简单查询

目录 第1关:简单查询 1.检索数据表所有的元组 2.检索符合条件的元组 educoder 第2关:多表查询 1.笛卡尔积 2.等值连接 3.自然连接 4.左外连接和右外连接的表示方法及转换为SQL educode 第3关:集合操作 1.集合并操作 2.集合交操作…

小学生护眼用什么样的台灯比较好用一点?小学生护眼台灯排行榜

孩子近视了,很多家长认为是数码产品导致的。其实除了数码产品,灯光也是一个非常重要的原因。或许你认为卧室的灯亮孩子写作业就没有问题,其实这种情况仍会出现灯下黑的现象。如果你想孩子写作业不受灯光的影响,那么一定要给他们配…

实验四 数据库设计

【实验目的】 1、掌握规范化数据库设计包括步骤及其任务、方法、结果等。 2、掌握数据库设计过程中关键文档的写法。 3、了解数据库辅助设计工具。 【实验内容】 请按下面大纲书写实验报告(请自行附页)。 (1)需求分析&#…

【MySQL】Mysql索引失效场景(15个必知)

文章目录 背景数据库及索引准备创建表结构初始化数据数据库版本及执行计划 1、联合索引不满足最左匹配原则2、 使用了select *3 、索引列参与运算4、 索引列参使用了函数5、 错误的Like使用6、 类型隐式转换7、使用OR操作8、 两列做比较9、 不等于比较10、 is not null11、 not…

ChatGPT实现stackoverflow 解释

stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…

系统分析师之系统设计(十五)

目录 一、软件流程设计 1.1 业务流程分析方法 1.2 业务流程建模 1.2.1 标杆瞄准 1.2.2 IDEF 1.2.3 DEMO 1.2.4 流程建模语言 1.2.5 基于服务的BPM 1.2.6 业务流程重组BPR 1.2.7 业务流程管理BPM 二、软件架构设计 2.1 概念 2.2 软件架构风格 三、 结构化设计 四…

这样的应急科普,你爱了吗?

“当我给救援队叔叔系上红领巾的时候,我特别的自豪,很开心!” “救援队的叔叔、阿姨们都很伟大,我长大了,也想和他们一样。” “我爸爸就是一名救援队队员,我很崇拜他!” 敬少先队员礼&#…

高通 Android 8/9/12/13 兼容U盘识别extfat模式

Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现 Android 8/9 1、kernel/msm-4.9/arch/arm64/configs/sdm670-perf_defconfig 增加代码如下(需要提交编译kernel记得git add sdm670-perf_defconfig 不需要commit哈!否则编译会还原…

最强算法视频公开课!(内容硬核,完全免费!

和录友们汇报一下,代码随想录算法公开课已经更新完毕了。 由我亲自录制了140期算法视频,覆盖了 《代码随想录》纸质版上全部题目的讲解。 视频全部免费开放在B站:代码随想录 目录就在视频播放的右边,完全按照代码随想录的顺序讲…

利用Redis的SetNx一步步实现分布式锁并改进

文章目录 1 基本原理和实现方式对比2 Redis分布式锁的实现核心思路3 利用setnx方法实现分布式锁加锁逻辑释放锁逻辑修改业务代码 4 Redis分布式锁误删情况说明5 解决Redis分布式锁误删问题6 分布式锁的原子性问题7 Lua脚本解决多条命令原子性问题8 利用Java代码调用Lua脚本改造…

DevOps产品开发实践

背景 2022年11月,公司启动了智能运维产品的研发项目,该项目基于zabbix进行二次开发,对行业客户的数据中心的基础软硬件设施进行数据采集和分析,通过持续的数据采集和监控,及时发现数据中心软硬件的异常状态并预警&…

k8s集群部署 | 三节点(复用)高可用集群过程参考

文章目录 1. kubeadm 部署三节点(复用)高可用 k8s 集群1.1 环境规划阶段1.1.1 实验架构图1.1.2 系统版本说明1.1.3 环境基本信息1.1.4 k8s 网段划分 1.2 基础安装及优化阶段1.2.1 系统信息检查1.2.2 静态 IP 地址配置1.2.3 配置主机名1.2.4 配置/etc/hos…

open3d 源码阅读kd_tree_search.py

核心函数接口: search_radius_vector_3d search_knn_vector_3d # ---------------------------------------------------------------------------- # - Open3D: www.open3d.org - # ----------------------…

基于Html+css的图展示52

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh

前言: 博主正在写linux的脚本的时候遇到:xx.sh: 3: Syntax error: "(" unexpected 查看shell脚本语法没有问题,后面发现是解释器的原因。 一、不同的解释器 #!是特殊的表示符,其后面根的是此解释此脚本的shell的路径…