基于时延法的麦克风阵列声源定位分析

2023-05-16

文章目录

  • 一. 关于麦克风阵列
  • 二. 关于声源定位
  • 三. 基于广义互相关(GCC)计算时延
  • 四. 基于时延差的声源定位法
    • 1. 近场模型
    • 2. 远场模型
  • 五. 三维空间阵列的声源定位系统实现
    • 1. 推导过程
  • 六. 六元圆形麦克风阵列声源定位
  • 七. 相关链接

一. 关于麦克风阵列

麦克风阵列: 麦克风阵列是由一定数目的声学传感器(麦克风)按照一定规则排列的多麦克风系统,而基于麦克风阵列的声源定位是指用麦克风拾取声音信号,通过对麦克风阵列的各路输出信号进行分析和处理,得到一个或者多个声源的位置信息。

麦克风阵列系统的声源定位技术研究意义在于: 输入的信息只有两个方向难以确定声源的位置,人类的听觉系统主要取决于头和外耳气压差声波实现声源定位。假使没有这个压力差,只能定位在平面上声源的位置,但就无法知道声音是从前面,或从后面传来的。因此,由人的听觉系统,科技研发人员得到了灵感,使用多个麦克风系统可以实现在三维空间中的声源位置的定位,麦克风的数量越多,所接收到的信息量也越多。声源的声源定位和声源增强是实现智能处理的两个关键问题,而声源定位是实现语音增强的前提和基础。一个麦克风的信息量较少,使得声源定位所需的信息缺乏,而麦克风阵列克服了上述缺点,充分利用每个麦克风信号之间的数据相关性,并加以融合,可以实现声源定位。

麦克风阵列声源定位技术的应用: 广泛应用于国防、智能机器人、视频会议及语音增强等众多领域,尤其在当下以智能办公和智能家居为主要室内场景的远场语音交互系统中。

二. 关于声源定位

目前基于麦克风阵列的声源定位方法主要有三种:基于最大输出功率的可控波束成形的定位方法、基于高分辨谱估计的定位方法、基于到达时延差估计的定位方法(Time Difference of Arrival,TDOA)。

  1. 基于最大输出功率的可控波束成形定位法。 波束形成法的原理是将麦克风接收到的信号进行滤波加权求和来形成波束,按照一定的规律对声源位置进行搜索,当麦克风达到最大输出功率时,为时搜索到的声源位置即为真实的声源方位。波束形成可分为常规的波束形成CBF(Conventional Beam Forming)、CBF+Adaptive Filter和自适应波束形成ABF(Adaptive Beam Forming)。
  2. 基于高分辨谱估计的定位法。 基于高分辨率谱估计的定位方法通过分解协方差矩阵估计声源方位。适合多个声源的情况,且声源的分辨率与阵列尺寸无关,突破了物理限制。该方法的优点是不受采样频率限制,且在一定程度下可以实现任意程度的定位,但是该方法计算复杂度较高,抗噪和抗混响性能较差,因此该方法适合在一些特定的环境下使用。这类方法可以拓展到宽带处理,但是对误差十分敏感(如麦克风单体误差,通道误差),适合远场模型,且矩阵运算量巨大。
  3. 基于到达时延差估计的定位法。 TDOA(time difference of arrival)是先后估计声源到达不同麦克风的时延差,通过时延来计算距离差,再利用距离差和麦克风阵列的空间几何位置来确定声源的位置。可分为TDOA估计(估计信号到达各麦克风的时间差)和TDOA定位(运用几何关系确定声源位置)两步。

三. 基于广义互相关(GCC)计算时延

时延估计有很多种,比较经典就是广义互相关函数 (Generalized Cross Correlation, GCC) 估计时延,这里简单介绍基于广义互相关函数估计时延的方法。

在噪声存在情况下,一个由远处声源发出的,并且被两个不同空间中的麦克风监听的信号可以数学建模为:

x 1 = s 1 ( t ) + n 1 ( t ) x_1=s_1(t)+n_1(t) x1=s1(t)+n1(t)                          (1)

x 2 = α s 1 ( t − D ) + n 2 ( t ) x_2=αs_1(t-D)+n_2(t) x2=αs1(tD)+n2(t)               (2)

其中, s ( t ) s(t) s(t) 是声音信号, n 1 ( t ) 、 n 2 ( t ) n_1(t)、n_2(t) n1(t)n2(t)是两个声音传感器检测噪声。 三者是稳定的随机过程,且互不相关。

计算 x 1 x_1 x1 x 2 x_2 x2 的互相关函数:

R x 1 x 2 ( τ ) = E [ x 1 ( t ) ∗ x 2 ( t − τ ) ] R_{x_1x_2}(τ)=E [ x_1(t)*x_2(t-τ) ] Rx1x2(τ)=E[x1(t)x2(tτ)]               (3)

R ^ x 1 x 2 ( τ ) = 1 T − τ ∫ τ T x 1 ( t ) x 2 ( t − τ )   d t \hat R_{x_1x_2}(τ)=\frac{1}{T-τ}\int_τ^T {x_1(t)x_2(t-τ)} \,{\rm d}t R^x1x2(τ)=Tτ1τTx1(t)x2(tτ)dt       (4)

其中估计的时延 D D D 为互相关函数值达到最大值时取得的 τ τ τ 值,即:

D ^ = a r g m a x   τ R x 1 x 2 ( τ ) \hat D=\underset {\ τ}{argmax} R_{x_1x_2}(τ) D^= τargmaxRx1x2(τ)                                 (5)

MATLAB 例程:

% 导入两个麦克风的音频数据
[y_0,Fs] = audioread('音轨-0.wav'); 
[y_1] = audioread('音轨-1.wav');

fprintf('采样频率:%d\n ······\n', Fs);

% 取出两段音频前2048个采样点,并作互相关处理,绘制曲线。
A = y_0(1:2048);
B = y_1(1:2048);

[value,delay] = xcorr(A,B);

subplot(1,2,1);
plot(delay, value);

D = zeros(1,926); 

%2048个点为一帧,计算互相关得到的时延,绘制出两段音频的时延变化。
for a = 1:2048:size(y_0,1)-2048
    A = y_0(a:a+2048);
    B = y_1(a:a+2048);
    [value,delay]=xcorr(A,B);
    value_max_idx = find(value==max(value));
    D1 = delay(value_max_idx);
    D((a-1)/2048+1) = D1;
end

subplot(1,2,2);
plot(D);

使用ReSpeaker的树莓派六麦克风套件,拿手机放歌作为声源围绕麦克风阵列移动,录制音频,并保存为6个wav音频文件,采用率为44100Hz。对其中两个麦克风音频文件做处理,如果取初始的2048个采样点做互相关处理就能得到下面图一,图一的峰值的横坐标即为估计时延。如果以2048个采样点作为一帧,对两段音频的每一帧进行互相关,并找到每帧的估计时延,绘制出来就能得到时延的变化曲线,如下面图二。

注意: 这里的时延并不是指具体的时间,而是采样点数。想要得到具体时间还需要除以采样频率。以2048采样点为一帧,就是以0.464s为一帧( 2048 44100 ≈ 0.464 \frac{2048}{44100}≈0.464 4410020480.464s)。

四. 基于时延差的声源定位法

在对麦克风阵列进行建模之前,我们需要分清楚什么近场与远场。顾名思义,离麦克风近则符合近场模型 ,离得远则符合远场模型

假设 L L L阵列间距 λ λ λ声波波长 M M M声源与麦克风的距离,我们定义 2 L 2 λ \frac{2L^2}{λ} λ2L2 为远近场临界值。

M < 2 L 2 λ M<\frac{2L^2}{λ} M<λ2L2 时,符合近场模型,此时声源到达麦克风阵列的波形视为球面波

M < 2 L 2 λ M<\frac{2L^2}{λ} M<λ2L2 时,符合远场模型,此时声源到达麦克风阵列的波形视为平面波

可听声的机械波频带为20Hz ~20000Hz,机械波波长大约在1.7cm ~ 17m(声速取340m/s)。然而在现实生活中,过高频率或过低频率的声波都是非常少量的,以人的声音为例,人语音频带的范围大概为300Hz至3400Hz,波长范围为0.1m~ 1.12m,当阵列间隔取4cm时,远近场临界值范围为 0m~3.2m。若取中间值,则可以认为1.6m内符合近场模型,1.6m外符合远场模型。

1. 近场模型

M < 2 L 2 λ M<\frac{2L^2}{λ} M<λ2L2 时,符合 近场模型,此时声源到达麦克风阵列的波形视为 球面波

近场模型至少需要3个麦克风,以最简单的3麦克风模型为例(如图: y 1 、 y 2 、 y 3 y_1、y_2、y_3 y1y2y3)。假设 τ 12 、 τ 13 τ_{12} 、τ_{13} τ12τ13分别表示第一个麦克风与第二和第三个麦克风之间的时延,那么有:

τ 12 = r 2 − r 1 c τ_{12}=\frac{r_2-r_1}{c} τ12=cr2r1         (6)

τ 13 = r 3 − r 1 c τ_{13}=\frac{r_3-r_1}{c} τ13=cr3r1         (7)

其中, c c c 为声速。标准大气压、 15 ° 15° 15° 条件下,声速为 340 m / s 340m/s 340m/s

根据麦克风阵列的的几何关系,由余弦定理,可以得到:

r 2 2 = r 1 2 + d 2 + 2 r 1 d c o s θ 1 r_2^2=r_1^2+d^2+2r_1dcosθ_1 r22=r12+d2+2r1dcosθ1     (8)

r 3 2 = r 1 2 + 4 d 2 + 4 r 1 d c o s θ 1 r_3^2=r_1^2+4d^2+4r_1dcosθ_1 r32=r12+4d2+4r1dcosθ1    (9)

其中, τ 12 、 τ 13 τ_{12}、τ_{13} τ12τ13可以通过互相关GCC求得(下面会细说),且 c 、 d c、d cd 为已知。结合(6) ~ (9) 即可求出未知量 r 1 、 r 2 、 r 3 、 θ r_1、r_2、r_3、θ r1r2r3θ ,结合坐标系可以求出 s ( k ) s(k) s(k) 的坐标。

2. 远场模型

M < 2 L 2 λ M<\frac{2L^2}{λ} M<λ2L2 时,符合 远场模型,此时声源到达麦克风阵列的波形视为 平面波

对于两个麦克风的情况,只能计算出方位角,无法计算出方位距离。假设 τ τ τ 为声波到达两个麦克风之间的时延,则有:

τ = d c o s θ c τ=\frac{dcosθ}{c} τ=cdcosθ                      (10)

θ = a r c c o s c τ d θ=arccos\frac{cτ}{d} θ=arccosdcτ              (11)

五. 三维空间阵列的声源定位系统实现

计算方法:几何求解、最小二乘法

上面所举的近场、远场的定位模型例子,分析都是最简模型下,平面声源的定位。下面以三维麦克风阵列为例,通过几何的方式求解三维空间下声源的定位。

1. 推导过程

一个三维麦克风阵列,麦克风分别为 m i ( i = 0 、 1 ⋅ ⋅ ⋅ n ) m_i(i=0、1···n) mi(i=01⋅⋅⋅n),声源 S S S 符合近场模型。现以麦克风 m 0 m_0 m0 为原点,如图建立直角坐标系。推导公式之前,需要先确定以下概念:

序号概念字符
1麦克风的坐标 m i m_i mi   i ∈ [ 0 , n ] i \in[0,n] i[0,n]
2声源的估计坐标 S S S
3声源 s s s m i m_i mi m 1 m_1 m1 的估计距离差 d ^ i \hat d_i d^i
4麦克风 m i m_i mi 到原点的的距离 R i R_i Ri
5声源 s s s 到原点的的距离 R s R_s Rs

如上图,根据三角形 m 0 m i s m_0 m_i s m0mis,由余弦定理有:

( R s + d i ) 2 = R i 2 − 2 m i T s + R s 2 (R_s+d_i)^2=R_i^2-2m_i^Ts+R_s^2 (Rs+di)2=Ri22miTs+Rs2                      (12)

公式 (12) 展开后得到:

R i 2 − 2 m i T s − 2 R s d i − d i 2 = 0 R_i^2-2m_i^Ts-2R_sd_i-d_i^2=0 Ri22miTs2Rsdidi2=0                         (13)

由于 d i d_i di 是通过估计的时延得到的,与实际值之间会有一个偏差,因此公式 (10) 不为零,可写为:

ε = ( R i 2 − d i 2 ) − 2 m i T s − 2 R s d i ε=(R_i^2-d_i^2)-2m_i^Ts-2R_sd_i ε=(Ri2di2)2miTs2Rsdi                      (14)

此时已经得到目标值的误差函数,使用最小二乘法求解,问题可以转化为:估计声源坐标 s ( x , y , z ) s(x,y,z) s(x,y,z),使得最终的误差平方和最小,即:

a r g m i n   s ( x , y , z ) ∑ i = 1 n [ ( R i 2 − d i 2 ) − 2 m i T s − 2 R s d i ] 2 \underset {\ s(x,y,z)}{argmin}\displaystyle\sum_{i=1}^{n} [(R_i^2-d_i^2)-2m_i^Ts-2R_sd_i]^2  s(x,y,z)argmini=1n[(Ri2di2)2miTs2Rsdi]2      (15)

将公式 (14) 写成矩阵形式:

ε = 2 R s D ^ + 2 M s − δ ε=2R_s\hat D+2Ms-\delta ε=2RsD^+2Msδ                                          (16)

其中, M = [ m 1 m 2 m 3 . . . . m n ] = [ x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 . . . . . . . . . x n y n z n ] M=\begin{bmatrix}m_1\\m_2\\m_3\\....\\m_n\end{bmatrix}=\begin{bmatrix}x_1&y_1&z_1\\x_2&y_2&z_2\\x_3&y_3&z_3\\...&...&...\\x_n&y_n&z_n\end{bmatrix} M= m1m2m3....mn = x1x2x3...xny1y2y3...ynz1z2z3...zn       D ^ = [ d ^ 1 d ^ 2 d ^ 3   . . . d ^ n ] \hat D=\begin{bmatrix}\hat d_1\\\hat d_2\\\hat d_3\\\ ... \\\hat d_n\end{bmatrix} D^= d^1d^2d^3 ...d^n         δ = [ R 1 2 − d ^ 1 2 R 2 2 − d ^ 2 2 R 3 2 − d ^ 3 2 . . . . . . . . . . R n 2 − d ^ n 2 ] \delta=\begin{bmatrix}R_1^2-\hat d_1^2\\R_2^2-\hat d_2^2\\R_3^2-\hat d_3^2\\..........\\R_n^2-\hat d_n^2\end{bmatrix} δ= R12d^12R22d^22R32d^32..........Rn2d^n2

公式 (16) 可以简化为:

ε = A μ − b ε=A\mu-b ε=Aμb                                   (17)

其中, A = [ M D ^ ] A=\begin{bmatrix}M&\hat D\end{bmatrix} A=[MD^]       μ = [ s R s ] \mu=\begin{bmatrix}s\\R_s\end{bmatrix} μ=[sRs]        b = 1 2 δ b=\frac{1}{2}\delta b=21δ

公式 (17) 的最小二乘解可以表示为:

μ ^ = ( A T A ) − 1 A T b \hat\mu=(A^TA)^{-1}A^Tb μ^=(ATA)1ATb                       (18)

关于矩阵形式下最小二乘解推导过程可以参考下面的链接(点击跳转),此处不详细讲解。

公式 (18) 即为计算结果,下面对结果进行进一步化简:

  1. 定义沿 A A A D ^ \hat D D^ 的投影矩阵为: P A = D ^ D ^ T D ^ T D ^ P_A=\frac{\hat D \hat D^T}{\hat D^T \hat D } PA=D^TD^D^D^T                                                     (19)

  2. 沿 D ^ \hat D D^ A A A 的投影矩阵即为: P D = I − P A = I − D ^ D ^ T D ^ T D ^ P_D=I-P_A=I-\frac{\hat D \hat D^T}{\hat D^T \hat D } PD=IPA=ID^TD^D^D^T I I I 为单位矩阵)     (20)

  3. 根据投影矩阵的性质,可以得到: A = P D [ M 0 ] A=P_D\begin{bmatrix}M&0\end{bmatrix} A=PD[M0]                       (21)

  4. 将公式 (21) 带入 (17) 中得到: ε = P D M s − b ε=P_D M s-b ε=PDMsb                              (22)

  5. 公式(22)的最小二乘解即为最终简化结果。

最终简化结果:

s = ( M T P D M ) − 1 M T P D b s=( M^T P_D M )^{-1}M^TP_Db s=(MTPDM)1MTPDb

M M M只与麦克风阵列的个数与排列有关, P D P_D PD b b b 在计算出时延估计的距离差 ( d i d_i di) 后也可以求得。

六. 六元圆形麦克风阵列声源定位


硬件平台: Seed Studio 的六元麦克风阵列套件(官网))

软件平台: Matlab 2019a

实际应用中,二维圆形阵列主要采用远场模型较多,因为可以在保证计算精度的同时,大大降低复杂性,减少运算量,且不需要较大的阵列间距,此处使用近场模型纯属因为要做毕设😝。公式都是根据三维阵列来推导的,之所以使用二维平面阵列是因为:没钱搭三维阵列,但又需要点实验数据放进毕业论文中。

二维阵列缺少 z z z轴的基元,使用第六章中的公式求解出的声源坐标值没有实际意义,但是可以通过 y y y x x x 的比值得到声源的偏航角。

θ y a w = a r c t a n y x θ_{yaw}=arctan\frac{y}{x} θyaw=arctanxy        (23)

MATLAB 代码:

#代码写得太烂,自行脑补

现以树莓派Seed Studio麦克风阵列套件为硬件平台进行环境声音的获取,将各个麦克风所获取到的音频储存为wav格式文件,采样率为44100Hz,将音频文件在PC机中使用Matlab进行处理运算。麦克风阵列为六元均匀圆阵,属于二维平面阵列,阵元之间的间距为4cm。

如上图所示,为六个麦克风 收集到的声音曲线,其中横坐标表示时间,纵坐标表示声音幅值。麦克风录制到的信号是一段长时间的音频片段,因此需要进行分帧处理,此处以2048个采样点为一帧,由于时间=采样点数/采样频率,因此以2048个采样点为一帧即以0.0464秒为一帧。我们假设一帧时间内,声音信号是联合平稳的,声源相对于参考坐标系的相位运动足够小可以忽略不计。


如上图所示,左图为该阵列对静态声源的估计曲线,右图则为对动态声源的估计曲线。


左图: 在空旷且安静的室内环境,使用手机播放歌曲作为声源,在距离麦克风阵列0.5m处保持静止,同时记录下六个麦克风录制的音频信息,采样率为44100Hz,以2048个采样点为一帧,使用声达时延法计算每一帧声源的方位角。


右图: 在空旷且安静的室内环境,使用手机播放歌曲作为声源,在距离麦克风阵列中心0.5m处绕麦克风阵列中心匀速旋转,同时记录下六个麦克风录制的音频信息,采样率为44100Hz,以2048个采样点为一帧,使用声达时延法计算每一帧声源的方位角。

七. 相关链接

相关链接:

1. 矩阵形式下最小二乘解推导:https://zhuanlan.zhihu.com/p/87582571

2. 关于投影矩阵与最小二乘:https://www.cnblogs.com/bigmonkey/p/9897047.html

3. 关于投影矩阵概念及其性质:https://blog.csdn.net/niu_123ming/article/details/86371308

4. 参考文献:基于六元空间阵列的声源定位系统实现

5. 参考文献:基于麦克风阵列的室内三维声源定位优化算法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于时延法的麦克风阵列声源定位分析 的相关文章

随机推荐

  • 公司研发工具链体系化建设,帮助公司从混乱走向正规

    一 软件发布平台 没办法对外提供二进制库下载便捷方式不方便部署 xff0c 不同版本之间预览和说明性欠缺问题 可以参考的解决方案 xff1a https www cnblogs com djlsunshine p 11164770 html
  • 关于写代码的几个看法

    最近在新公司负责bug的修复 xff0c 发现很多的代码逻辑理解起来有些困难 现在将其中观察到的现象列出来 xff0c 谈谈自己的看法 1 类过大 对于代码来说 xff0c 我们在编写的时候最好做到SRP Single Responsibi
  • 树莓派VNC server设置开机自启动

    目前已测试OK的几个方法 xff1a 方法1 xff08 作为服务自启动 xff09 xff1a 在 etc init d 中创建一个文件 例如tightvncserver xff1a span class token function s
  • 一个结构体 = 另一个结构体(同类型结构体之间可直接赋值操作)

    两个同类型结构体变量可以直接赋值 xff0c 不同类型结构体不能直接赋值 span class token macro property span class token directive hash span span class tok
  • FreeRTOS任务切换过程深层解析

    FreeRTOS 系统的任务切换最终都是在 PendSV 中断服务函数中完成的 xff0c uCOS 也是在 PendSV 中断中完成任务切换的 为什么用PendSV异常来做任务切换 PendSV 可以像普通中断一样被 Pending xf
  • QT C++入门学习(1) QT Creator安装和使用

    Qt官方下载 Qt 官网有一个专门的资源下载网站 xff0c 所有的开发环境和相关工具都可以从这里下载 xff0c 具体地址是 xff1a http download qt io 进入链接后 xff0c 是一个文件目录 xff0c 依次进入
  • QT初体验:手把手带你写一个自己的串口助手

    前言 本文记录一下用QT Creator 写一个基本功能齐全的串口助手的过程 xff0c 整个工程只有几百行代码 xff0c 跟着做下来对新手来说可以更快了解整个QT项目的开发过程和一些常用控件的使用方法 对新手学习QT能增强信心 xff0
  • QT如何打包生成独立可执行.exe文件

    一 将QT程序使用Release编译 二 新建一个文件夹 xff0c 将Release编译生成的exe文件复制到新建文件夹中 先找到Release编译生成的exe文件夹位置 xff0c 与项目创建的文件夹有关 xff1a 临时文件夹 rel
  • 利用OpenCV识别不规则图形轮廓并找其中心点和角度

    关于寻找图形的轮廓 xff0c 想来大家都不陌生 但平常寻找并进行识别的轮廓都是较为标准的图形 xff0c 如圆形 xff0c 矩形等 但在一些特殊情况下 xff0c 我们所检测的图形并不是理想的标准图形 比如说我们检测元件的引脚 xff0
  • 神经网络学习小记录21——InceptionV3模型的复现详解

    神经网络学习小记录21 InceptionV3模型的复现详解 学习前言什么是InceptionV3模型InceptionV3网络部分实现代码图片预测 学习前言 Inception系列的结构和其它的前向神经网络的结构不太一样 xff0c 每一
  • Ubuntu的快乐学习3——ros的launch用法

    Ubuntu的快乐学习3 ros的launch用法 学习前言launch是什么launch的使用方法一 简单使用二 常用标签1 launch标签2 node标签3 include标签4 remap标签5 param标签6 rosparam标
  • 三周年创作纪念日

    机缘 不知不觉已经开始分享三周年了 xff0c 最开始什么都不懂 xff0c 作为自动化的学生 xff0c 以为学点算法就可以变得厉害一些 xff0c 于是学了点C 43 43 相关就开始分享 后来立志于研究深度学习算法 xff0c 感觉强
  • win10+vs2017+opencv4.0.1+opencv_contrib-4.0.1详细教程

    最近想好好认真学习一下opencv4 0 xff0c 需要用到contrib扩展库 xff0c 配置完记录下 先写一下版本信息 xff1a opencv4 0 1 xff0c vs2017和 win10 其他opencv版本安装和配置原理一
  • OpenHD---低成本开源高清数字图传

    转载注明出处 文章目录 一 前言二 OpenHD简单介绍三 图传材料准备1 树莓派2 摄像头 排线 SD卡 读卡器4 网卡 四 硬件连接五 镜像刷写六 通电测试七 系统参数设置八 连接飞控九 关于二次开发十 最后 一 前言 这篇文章是对树莓
  • PS2手柄通讯协议解析---附资料和源码

    文章目录 一 PS2介绍二 PS2通讯协议介绍 xff08 1 xff09 PS2端口介绍 xff08 2 xff09 PS2通讯过程 三 基于STM32的PS2通信源码四 文档与源码下载链接 一 PS2介绍 今天就带大家来认识一下PS2的
  • Stm32延时与计时方法(HAL库)

    文章目录 一 延时的3种方法1 循环延时2 定时器中断延时与非中断延时 三 定时器中断式计时与延时二 定时器非中断式延时四 代码例程五 同系列博客 一 延时的3种方法 首先 xff0c 先了解一下什么延时 顾名思义 xff0c 延时即是延长
  • CAN通信知识梳理及在Stm32上的应用(HAL库)

    文章目录 一 CAN通信简介二 硬件连接三 CAN总线上的电平信号四 CAN帧的种类 xff08 1 xff09 遥控帧 xff08 2 xff09 数据帧 五 CAN的仲裁方法六 CAN在Stm32上的应用 xff08 1 xff09 C
  • C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)

    文章目录 C语言函数库 一 lt ctype h gt 二 lt math h gt 三 lt stdio h gt 四 lt stdlib h gt 五 lt time h gt 六 lt string h gt 文档资料 C语言函数库
  • 作品分享:基于STM32的温度报警器含源码、原理图、PCB文件、作品报告

    文章目录 一 前言二 材料准备三 硬件部分四 软件部分1 底层封装库2 中间层3 应用层 五 外壳设计六 资料链接 一 前言 该作品是我在华工电工开放实习的作品 xff0c 本作品由七部分组成 中央为Stm32F405RG芯片 xff0c
  • 基于时延法的麦克风阵列声源定位分析

    文章目录 一 关于麦克风阵列二 关于声源定位三 基于广义互相关 GCC 计算时延四 基于时延差的声源定位法1 近场模型2 远场模型 五 三维空间阵列的声源定位系统实现1 推导过程 六 六元圆形麦克风阵列声源定位七 相关链接 一 关于麦克风阵