[数字麦克风] 求大神帮忙,声源定位实验被解方程难住了

littleshrimp   2017-11-22 20:59 楼主
这是一个没完成的任务
用了半个月时间
连续用MATLAB等软件解了几天的方程
目前还没解决算法的问题
有知道大神麻烦帮忙看下
情况是这样的:
我月初拿到ST的BlueCoin套件BlueCoin板子上有4颗MEMS麦克风传感器形成麦克风阵列
以前用2颗麦克风实验过声源定位
在只有2颗麦克风的情况下只能对二维空间的声源角度进行估算
如果想更精准的检测声源的位置通常需要最少4颗麦克风
ST BlueCoin资料
http://www.st.com/content/st_com/en/products/evaluation-tools/solution-evaluation-tools/sensor-solution-eval-boards/steval-bcnkt01v1.html

QQ图片20171122200718.png


双麦克风声源定位贴子
https://bbs.eeworld.com.cn/thread-570500-1-1.html


BlueCoin套件的例程里有声源定位的代码
因为都是以库的形式提供,不能查看也不能修改
所以想自己试试看
原理是利用4颗麦克风收到的数据计算出声源到达的时间差(TDOA)
比如麦克风B和A的时间差,C和A的时间差,D和A的时间差以及4颗麦克风的位置这几个数据
我试过2种方法
一种是通过三解函数把能想到的条件列成方程,让MATLAB计算
QQ图片20171122203231.png


通过几何画板画一个棱锥,A、B、C、D四个点代表麦克风,E代表声源
QQ图片20171122203139.png
得到EA,EB,EC,ED数据,分别用EB,EC,ED减去EA得到四颗麦克风之间的三个到达时间差b,c,d
把b,c,d数据交给MATLAB,可以得到EA的值,也可以得到E点的x,y,z坐标
和几何画板数据接近
因为最终要使用单片机计算声源的坐标,所以不仅仅是让MATLAB帮我计算结果
希望MATLAB能告诉我计算的方法,当把b,c,d使用符号而不是具体数值表示时
我连续使用电脑计算了几天,直到几次系统内存不足终止计算也没能得到通过a,b,c获得x,y,z的公式
MATLAB不行又试过Mathematic,MAPLE,都没有答案
所以现在有2种可能,一种可能是这类的数据软件我不太熟悉,有些设置没有配置
另一种可能是方程里给出的限定条件还不够,比如在
b=-0.40674146978418;
c=0.38541872439273;
d=0.68416206971011;
可以计算出EA = 2.245264768041492;
这个结果和几何画板里的接近
如果将这三个数值任一一个做少量修改,比如把d=0.6841改成d=0.6861
MATLAB就会反回[0x1 sym]
这说明b,c,d三个数必需满足某种特定条件,如果不把条件列出来数学软件也是大海捞针无能为力

还有一种计算方法比较简单,是通过4颗麦克风和声源的坐标计算
QQ图片20171122204650.png


同样把b,c,d数据交给MATLAB,也可以得到E点的x,y,z坐标
当把b,c,d换成符号而不是具体数值时同样得不到我想要的公式


希望有经验的大神给出出主意






虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复评论 (9)

各个点的声音是如何同步的啊?
点赞  2017-11-22 23:26
引用: johnrey 发表于 2017-11-22 23:26
各个点的声音是如何同步的啊?

声源只有1个 4个麦克风采集同一个声源的声音计算时差
点赞  2017-11-22 23:33
根据三角形必有 |EA-EB|<=|AB|  同理还有两个
b,c,d要满足的必要非充分条件
点赞  2017-11-23 08:51
路过打卡绑定
点赞  2017-11-23 08:56
引用: EETUX 发表于 2017-11-23 08:51
根据三角形必有 |EA-EB|

这个写个 对角线的条件都放里过
点赞  2017-11-23 09:06
b确定一个双曲面的分支,特殊情形为平面。 考虑几何画板所示的特殊情况(ABCD共面),曲面方程理应最多只有z^2项,没有z的一次项和xz,yz交叉项。 同理c,d 从而得到3个3元2次方程。双曲面的哪个分支对解进行筛选 在这个特殊情形下z可以消去,得到两个2元2次方程。含有消去z的隐含约束条件 z^2>=0; ABCD若为矩形,方程无xy交叉项。 两个方程应均形如:+-(x-m)^2+-(y-n)^2=+-L 消元可得一 一元四次方程 [四次方程是可以有解析解的!!]更一般的清新超出了我的数学水平... ____ 纯粹用数学知识分析的一下,希望没有出错的地方...... 本帖最后由 EETUX 于 2017-11-23 10:17 编辑
点赞  2017-11-23 10:13
引用: littleshrimp 发表于 2017-11-22 23:33
声源只有1个 4个麦克风采集同一个声源的声音计算时差

按照A收到声音作为时间起点?然后等待BCD收到声音?
点赞  2017-11-23 12:52
大神,你这个声源定位实验做出来没有啊,能求出来时延?能问问这个套件四个麦克风位置都是定死了的?
点赞  2018-3-9 22:16
引用: yimifeiji 发表于 2018-3-9 22:16
大神,你这个声源定位实验做出来没有啊,能求出来时延?能问问这个套件四个麦克风位置都是定死了的?:hands ...

是定死的 还没解决
点赞  2018-3-10 15:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复