💥1 概述
在本文中,提出了一种基于加权压力匹配方法(WPMM)的私人声音系统。目的是将输入信号设计到扬声器阵列,允许合成目标场,该目标场在所谓的暗点和听众位置之间具有较大的振幅变化。当阵列的输入能量有限时,该系统使听者能够控制方向性性能和在聆听位置再现目标场的准确性之间的权衡。这是通过基于对聆听区声场特性的限制来计算暗区中的WPMM权重来实现的。该系统针对许多预定义的用例场景进行了验证。在具有圆形阵列原型的消声环境中的实验结果表明,听者可以在很宽的频率范围内控制性能权衡。本文的第二部分介绍了当用户选择性能约束的新值时快速更新输入信号的算法。
📚2 运行结果
部分代码:
%% Algorithm 2 function [psi_est, q_temp] = Alg2_RecursiveBisectionSearch(zBT, zBT_zBconj, betaI, ZDH_ZD, zBconj, pBmin, Psi_Max, Psi_Min, thresh) % Implementation of Alg 4 % Author: F Olivieri psi_est = (Psi_Max - Psi_Min)/2 + Psi_Min; q_temp = (zBT_zBconj + psi_est*ZDH_ZD + betaI)\zBconj; pB = real(zBT*q_temp); condition1 = abs(pB - pBmin); if condition1 <= thresh || Psi_Max <= thresh % condition is met: Stop! return; else % search for the parameter if pB < pBmin % yes: need to decrease psi_est Psi_Max = psi_est; else % no: need to increase psi_est Psi_Min = psi_est; end psi_est = Alg2_RecursiveBisectionSearch(zBT, zBT_zBconj, betaI, ZDH_ZD, ... zBconj, pBmin, Psi_Max, Psi_Min, thresh); end end %% Iterative search function [q_fsp, psi_D_fsp] = fsp(q_fsp, psi_D_fsp, MatTemp, ZDH_ZD, zBconj, zBT, pB_min, delta_psi_Alg_1, lengthfreqbins, L) % Implementation of Full-search of psi_D % Author: F Olivieri for freq_idx = 2:lengthfreqbins psi_D_temp = 1; q_temp = (MatTemp(:, :, freq_idx) + psi_D_temp*ZDH_ZD(:, :, freq_idx))\ zBconj(:, freq_idx); while zBT(freq_idx, :)*q_temp < pB_min && psi_D_temp > 0 psi_D_temp = psi_D_temp - delta_psi_Alg_1; q_temp = (MatTemp(:, :, freq_idx) + psi_D_temp*ZDH_ZD(:, :, freq_idx))\ zBconj(:, freq_idx); end q_fsp(:, freq_idx) = q_temp; psi_D_fsp(freq_idx) = psi_D_temp; end end
🌈3 Matlab代码实现
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Ferdinando Olivieri, Filippo Maria Fazi, Simone Fontana, Dylan Menzies, Philip Arthur Nelson (2017) Generation of private sound with a circular loudspeaker array and the Weighted Pressure Matching method