2020年认证杯SPSSPRO杯数学建模A题(第一阶段)听音辨位全过程文档及程序

2020年认证杯SPSSPRO杯数学建模

A题 听音辨位

原题再现:

  把若干 (⩾ 1) 支同样型号的麦克风固定安装在一个刚性的枝形架子上 (架子下面带万向轮,在平地上可以被水平推动或旋转,但不会歪斜),这样的设备称为一个麦克风树。不同的麦克风由于位置不同,录制到的声音往往也有细微的不同,所以通过对多支麦克风接收到的声音进行对比分析,可以得到更多的有关声源的信息。我们假设每个麦克风都是全向的,也就是单麦克风无法分辨声源的方向。
  现在有一个地面、墙壁和天花板都是光滑大理石的大厅,大厅内空旷而安静。在大厅里只有一个走动的人,发出清晰的脚步声。我们准备在大厅里安放一个麦克风树,希望通过检测声音来进行一些测量,包括尽量准确地实时确定这个人的位置,也包括测量这个大厅的某些几何参数。请你建立合理的数学模型,设计一个成本尽量低、而且可以达到使用要求的麦克风树。要求给出每支麦克风的相对位置以及相对于地面的高度,至于枝形架子的具体力学结构则不需要考虑。
  第一阶段问题: 根据已知和所求信息的不同,这个问题可以有不同的复杂程度。我们需要在以下两种情形中对麦克风树进行合理的设计,并给出对接收到的声音信号进行分析的算法。
  1. 已知大厅的平面形状是矩形,地面和天花板都是水平的。假设我们已知大厅轮廓的准确尺寸 (长 × 宽 × 高)。但在实际施工中,由于操作和设备所限,在麦克风树放置在地面上的时候,无法精确测量放置点的坐标以及水平的旋转角度。我们希望确定此人的位置。
  2. 大厅轮廓的尺寸未知,其余条件同上。我们希望确定此人的位置,并尽量准确地确定大厅的轮廓尺寸 (长 × 宽 × 高)。

整体求解过程概述(摘要)

  本文针对麦克风阵列接收声源信号以获得声源实时位置及如何测量大厅几何参数的问题进行分析研究,通过分析比较,最终确定以十字形麦克风阵列为核心,以声达时间差和能量分析为方法的优化模型。
  针对于问题一,我们将从两个方面拆解问题并给出分析过程,其中包括麦克风阵列的选择和优化定位模型的建立。
  第一个方面是关于麦克风阵列的选择,我们首先建立了一维线性阵列模型,在对线性模型的计算改进的基础上建立了二维面阵模型其中包括方形阵列模型、等边三角形阵列模型、圆形阵列模型。接着我们对三个模型进行了合理的理论推导与证明,通过实验计算出原始位置与测定位置之间的误差,并分析其结果得出平均误差,证明出方形阵列为最适宜阵列模型。最后结合实际应用与实现的难易程度进行分析,且由于方形阵列可以近似看为十字形阵列,因此本文将十字形阵列确定为最优阵列的选择。
  第二个方面是关于定位模型的建立,由于考虑到声源传播模式可以分为近场与远场,我们对远近场区分的常用公式进行了声源在近远场的比对分析,但因为在本题中可以忽略远近场的影响,于是在理想状态下,可以根据信号时延性进行计算以得到声源位置。阵元间距问题,我们通过给出一定的声源频率,结合声速与波长的关系,给出合适的阵元间距。最后,通过声源的位置信息,确定了以四个麦克风数量为基准的麦克风矩阵定位模型,再进行逐步分析增加,最终确定麦克风最优个数。
  针对于问题二,我们需要解决如何在大厅几何参数未知的情况下,测定大厅的体积及实时确定人的位置。由于大厅几何参数未知,我们首先利用声音会逐渐减弱的特性确定了在仅有扩散衰减情况下的声音衰减模型。通过分析确定无法忽略吸收衰减和散射衰减对模型的影响,于是对模型进行了优化提出了衰减系数a 。接下来,我们设计了一个实验通过利用 matlab 进行 power 幂函数方程拟合以测定在室内环境下衰减系数的值。其次,由于未确定大厅几何参数会对定位模型造成一定的影响,因此以声达时间差来确定大厅的定位模型无法精确得出大厅的大小,所以我们选择二选其一声音强度(能量法)来帮助对未知大厅大小的定位模型的建立。通过得出声强级和传播距离的关系,设计出合理的麦克风安置方法。考虑到麦克风接收声源信息的误差会导致不同麦克风对声源位置的估计产生偏差,因此使用蒙特卡罗算法进行近似处理,从而通过计算可以得到的合理声源位置。
  最后,本文对所有问题的模型进行了客观合理的评价,并且对建立的数学模型进行了改进分析,使得模型的应用面更加广泛。

问题分析:

  对于问题一:已知平面是矩形的大厅且已知大厅轮廓的准确尺寸,在理想情况下,如何建立起一个在刚性的枝形架子上的麦克风树,忽略了近远场的影响及声音的传输损失,通过分析各种阵列的优缺以选择建立最优的一个成本尽量低、而且可以达到使用要求麦克风阵列和确定阵元的数量给出每支麦克风的相对位置以及相对于地面的高度,能实时确定发出清晰声源(脚步声)的人的位置。
  对于问题二:现实中往往并不能准确知道大厅的几何参数,并且无法忽略声音传输的损失。由于以上原因,我们可以首先在大厅体积未知的情况下,在问题一解决的基础上,用已经建立的模型下寻找借助声源传播求解大厅的几何参数,然后将建立一个新的模型,对结果分别进行预测,并将结果进行比较,于是可以得出在非理想情况下,如何实时确定人的位置。

模型假设:

  1. 在远场模型中,因为声源信息到麦克风阵列的幅度差较小,忽略不计。
  2. 忽略鞋和体型等因素,一个正常人脚步声的频率在 20 Hz ~40 Hz 。
  3. 不考虑环境的噪声影响以及室内混响的影响。
  4. 在第一问中,忽略远场和近场对麦克风阵形的影响。
  5. 麦克风的品质(即对信息的收集能量)不随实验时间的进行而下降。
  6. 持续行走发出的脚步声的声强级(分贝)不发生改变,始终为 50 分贝。

论文缩略图:

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

clear;clc;
v=340;z=11.33;
a=input('please enter the time difference between unit 1 and unit
2:');
b=input('please enter the time difference between unit 1 and unit
3:');
c=input('please enter the time difference between unit 1 and unit
4:');
e=input('please enter the hall width:');
p=sqrt(e*z/4);
r=abs((v/2)*((a^2+b^2+c^2)/(b-a-c)));
h=asin((v/(2*p))*(sqrt((a-c)^2+b^2)));
for i=0:pi/2:2*pi
k=atan((c-b)/a)+i;
if (k>0)&&(k<pi/2)
d=k;
end
end
disp(r);
disp(h);
disp(d);
clear;clc;
d1=input('please enter a value of d1:');
d2=input('please enter a value of d2:');
d3=input('please enter a value of d3:');
d4=input('please enter a value of d4:');
a=1;b=1;c=1;d=1;e=0;f=0;g=0;h=0;k=0;j=0;
for x=1:0.5:20
for y=1:0.5:20
for i=1:10000
x1=round(x*rand);
y1=round(y*rand);
d5=sqrt(x1^2+y1^2);
d6=sqrt(x1^2+(y-y1)^2);
d7=sqrt((x-x1)^2+y1^2);
d8=sqrt((x-x1)^2+(y-y1)^2);
if
(abs(d5/d1-1)<0.01)&&(abs(d5/d1-1)<a)&&(abs(d6/d2-1)<0.01)&&(abs(d6/d2-1)
<b)&&(abs(d7/d3-1)<0.01)&&(abs(d7/d3-1)<c)&&(abs(d8/d4-1)<0.01)&&(abs(d8
/d4-1)<d)
a=abs(d5/d1-1);
b=abs(d6/d2-1);
c=abs(d7/d3-1);
d=abs(d8/d4-1);
e=x1;
f=y1;
g=d5;
h=d6;
k=d7;
j=d8;
end
end
end
end
if (e==0)&&(f==0)
fprintf('所给数据误差过大无法分析\n');
else
x1=e;
y1=f;
disp(x1);
disp(y1);
disp(x1+sqrt(k^2-y1^2));
disp(y1+sqrt(h^2-x1^2));
end
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

x-cmd-pkg | 音视频处理领域中常用的开源转换工具:ffmpeg

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 ffmpeg 是音视频处理领域中常用的开源转换工具。以强大的功能、广泛的格式支持和丰富的参数调节在处理音视频格式的任务中得到了广泛的使用。 FFmpeg 是由 Fabrice Bellard 于 2000 年发起的开源多媒体框架&#xff…

starrocks集群fe/be节点进程守护脚本

自建starrocks集群&#xff0c;有时候服务会挂掉&#xff0c;无法自动拉起服务&#xff0c;于是采用supervisor进行进程守护。可能是版本的原因&#xff0c;supervisor程序总是异常&#xff0c;无法对fe//be进行守护。于是写了个简易脚本。 #!/bin/bash AppNameFecom.starrock…

189. 轮转数组(Java)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 输入&#xff1a; nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮…

多开工具对手机应用启动速度的优化与改进

多开工具对手机应用启动速度的优化与改进 随着智能手机的普及和应用程序的多样化&#xff0c;用户对手机应用的启动速度提出了更高的要求。在这种情况下&#xff0c;多开工具作为一种应用程序管理工具&#xff0c;对手机应用的启动速度进行了优化和改进&#xff0c;为用户带来…

模型 安索夫矩阵

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下&#xff1a; 根据安索夫矩阵&#xff0c;江小白的现有产品是其白酒产品&…

使用top +jps+jstack定位cpu占用100%的Java服务问题定位简易操作指引

1. 使用top命令找出CPU占用最多的应用 首先&#xff0c;你需要使用top命令来识别哪个进程正在使用大量的CPU资源。 运行top命令:在终端中输入top并按下回车键。查看CPU使用率最高的进程:默认情况下&#xff0c;top会按CPU使用率排序。查看%CPU列&#xff0c;找出使用率最高的…

缓存cache和缓冲buffer的区别

近期被这两个词汇困扰了&#xff0c;感觉有本质的区别&#xff0c;搜了一些资料&#xff0c;整理如下 计算机内部的几个部分图如下 缓存&#xff08;cache&#xff09; https://baike.baidu.com/item/%E7%BC%93%E5%AD%98 提到缓存&#xff08;cache&#xff09;&#xff0c;就…

OpenAI“一路生花”,致力于超级人工智能研发

原创 | 文 BFT机器人 INTELLIGENT ROBOT OpenAI提供1000万美元的资助用于解决超级智能AI控制问题 OpenAI是人工智能研究领域的领先组织&#xff0c;据媒体称&#xff0c;它正在采取积极措施应对与超级智能AI系统相关的潜在风险。在一项大胆的举措中&#xff0c;该公司宣布将提…

独立站如何优化网页加载速度

对于跨境电商独立站而言&#xff0c;流量是跨境电商业务的重中之重&#xff0c;由于独立站并不自带流量&#xff0c;非常依赖于谷歌搜索引擎自然流量&#xff0c;以及付费广告流量。 但随着付费流量价格日益水涨船高&#xff0c;为了摆脱对付费流量的依赖&#xff0c;相信广大…

可移动磁盘上的文件删除了怎么恢复?详细教程介绍

在我们的日常生活和工作中&#xff0c;可移动磁盘作为一种便携式的存储设备&#xff0c;经常被用来备份和传输数据。然而&#xff0c;有时候由于误操作或不小心的删除&#xff0c;导致可移动磁盘上的文件丢失。这些文件可能包含重要的工作资料、个人照片、视频等&#xff0c;一…

【YOLO系列】YOLOv8 -【教AI的陶老师】

文章目录 yolo v8 模型结构图这样搞有什么意义&#xff1f;【获得不同尺寸的输出】c2f 详细结构yolo v8 损失函数与 yolo v5 的区别 yolo v8 模型结构图 详细结构图 这样搞有什么意义&#xff1f;【获得不同尺寸的输出】 c2f 详细结构 yolo v8 损失函数 与 yolo v5 的区别

超声波测距系统

文章目录 前言一、功能描述一、界面一二、界面二三、界面三四、界面四五、初始界面 二、编程实现 前言 具有测距、温度补充、实时时钟、记忆、阈值警报、串口数据发送等等功能&#xff0c;通过LCD1602显示&#xff0c;按键进行相关操作。 一、功能描述 LCD1602显示共有五个界面…

第1章 Kali Linux入门

本章将带领读者初步了解渗透测试专用的独立Linux 操作系统——Kali Linux。本章涵盖下述主题&#xff1a; ● Kali 的发展简史&#xff1b; ● Kali 的一般用途&#xff1b; ● Kali 的下载与安装&#xff1b; ● Kali 的配置与更新。 在本章的结尾部分&#xff0c;我们还…

【进阶】【JS逆向爬虫】【2.JavaScript 基础语法】JS代码导入方式

JS逆向爬虫 JS代码导入方式1.行内式写法2.内嵌式&#xff08;建议写在</body>之前&#xff09;3.外部式&#xff08;建议写在</head>之前&#xff09; JS代码导入方式 1.行内式写法 可以将单行或少量 JS 代码写在HTML标签的事件属性中&#xff08;以 on 开头的属…

centos安装Docker和DockerCompose

Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10&#xff0c; CentOS 7 满足最低内核的要求&#xff0c;所以我们在CentOS 7安装Docker。 安装Docker 卸载旧版docker 旧版本的 Docker 采用docker或docker-engine。在尝试安装新版本之前卸载任何此…

GitHub提交项目到仓库fatal: No configured push destination.

原因&#xff1a;没指定提交到哪个远程仓库 解决方法&#xff1a; 在你git add .和commit之后 git add . git commit -m "信息" git push前输入以命令 git branch -M main git remote add origin gitgithub.com:xxx(你GitHub的名称)/xxx.git(你仓库的名称) git …

【计算机网络】第五,六章摘要重点

1.运输层协议概述 运输层提供的是进程之间的通信 2. 3.套接字指的是什么 ip地址端口号 4.每一条TCP语句唯一地被通信两端连接的两个端点 5.TCP传输如何实现 以字节为单位的滑动窗口 超时重传 选择确认 6.TCP流量控制和拥塞控制的区别 流量控制&#xff1a;点对点通信…

Cisco模拟器-OSPF路由协议

设计要求用两台双口路由器连接不同IP网段的计算机&#xff0c;并使用OSFP协议发现路由表使不同IP网段的计算机可以相互通信。 通过设计&#xff0c;可以连通IP地址网段不同的局域网&#xff0c;可应用在园区网的互连和互通的实现上。 主要配置步骤 路由器0&#xff1a; Router…

【PostgreSQL】从零开始:(三十九)约束-主键

主键 主键&#xff08;Primary Key&#xff09;是数据库表中用于唯一标识每一行记录的字段。主键具有以下特点&#xff1a; 唯一性&#xff1a;每个主键值在表中是唯一的&#xff0c;不允许出现重复值。非空性&#xff1a;主键字段的值不能为空&#xff0c;即主键字段不能为n…

四十八----react实战

一、项目中css模块化管理 1、css-loader 以下可以使用styles.xxx方式使用class是因为使用css-loader配置了module。 import styles from ./index.less export const App(){return <div className={styles.xxx}>hello word</div> }//webpack配置 {test:/\.css$/,u…