主要内容

麦克风阵列声波束形成的多核仿真

这个例子展示了如何在嘈杂的环境中对一组麦克风接收到的信号进行波束形成以提取所需的语音信号。它使用Simulink®中的数据流域将系统的数据驱动部分划分为金宝app多个线程,从而通过在桌面的多核上执行它来提高模拟的性能。

介绍

该模型模拟了在10元均匀线性麦克风阵列(ULA)上接收来自不同方向的3个音频信号。在接收端加入热噪声后,进行波束形成并将结果播放到声音设备上。

收到音频模拟

音频源子系统从音频文件中读取,并为每个音频源指定方向。宽带Rx阵列模块模拟在ULA接收音频信号。宽带Rx阵列块的第一个输入是一个1000x3的矩阵,其中输入的三列对应于三个音频源。第二个输入(Ang)指定信号的入射方向。Ang的第一行以度数表示每个信号的方位角,第二行以度数表示每个信号的仰角。这个块的输出是一个1000x10的矩阵。输出的每一列对应于在麦克风阵列的每个元素上记录的音频。麦克风阵列的配置在块对话框面板的传感器阵列选项卡中指定。接收器前置放大器块为接收信号添加白噪声。

波束形成

有三个Frost波束形成块执行波束形成的矩阵通过输入端口X沿输入端口Ang指定的方向。三个波束形成器中的每一个都将光束导向三个源中的一个。波束形成器的输出在Audio Device Writer块中播放。可以使用“选择源”块选择不同的源。

使用多线程提高仿真性能

这个示例可以使用Simulink中的数据流域来自动将系统的数据驱动部分划分为多个线程,从金宝app而通过在桌面的多核上执行它来提高模拟的性能。要了解关于数据流以及如何使用多线程运行Simulink模型的更多信息,请参见金宝app使用数据流域的多核执行

设置数据流子系统

在Si金宝appmulink中,通过使用属性检查器将domain参数设置为dataflow,可以将数据流指定为子系统的执行域。Dataflow域自动划分模型并使用多线程模拟系统,以获得更好的模拟性能。一旦您将域参数设置为Dataflow,您就可以使用Dataflow Simulation Assistant来分析您的模型以获得更好的性能。您可以通过单击Dataflow模拟助手来打开数据流的助理按钮下方自动帧尺寸计算参数。

分析数据流子系统中的并发性

Dataflow仿真助手建议更改模型设置以获得最佳仿真性能。要接受建议的模型设置,请在旁边模拟性能的建议模型设置,点击接受所有.或者,您可以展开该部分以单独更改设置。在本例中,模型设置已经是最优的。在数据流模拟助手中,单击分析按钮,以启动分析的数据流域模拟性能。一旦分析完成,Dataflow Simulation Assistant就会显示在模拟期间数据流子系统将使用多少线程。

对于这个模型,助手显示了三个线程,因为三个Frost Beamformer块的计算量很大,它们可以并行运行。然而,三个冰霜波束发生器方块取决于麦克风阵列和接收器方块在他们开始执行之前完成。通过使用波束形成器块和源仿真块之间的管道延迟,可以提高该模型的并发性。Dataflow Simulation Assistant将推荐的管道延迟数显示为建议延迟.对于这个模型,建议的延迟是1。单击接受旁边的按钮建议延迟在数据流模拟助理中使用数据流子系统的推荐延迟。

多核性能仿真

要衡量通过使用数据流获得的性能改进,请比较模型在有和没有数据流时的执行时间。Audio Device Writer实时运行,将模型的模拟速度限制为实时。在测量执行时间时注释掉Audio Device Writer块。在Intel®Xeon®CPU W-2133 @ 3.6 GHz 6核12线程处理器的Windows桌面计算机上,该模型使用数据流域执行速度比原始模型快1.8倍。

总结

这个例子展示了如何在嘈杂的环境中对一组麦克风接收到的信号进行波束形成以提取所需的语音信号。它还展示了如何使用数据流域将模型的数据驱动部分自动划分为并发执行线程,并使用多个线程运行模型。