👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🌈3 Matlab代码实现
🎉4 参考文献
💥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