Root-MUSIC算法如何为ULA的DOA估计工作为一个录制的音频文件?

18次观看(过去30天)
我正在试着申请 分阶段。RootMUSICEstimator 用于在现实世界中估计声源的方位角。我通过在2元素ULA中录制音频文件并将声源置于特定角度( 方位20度,仰角0度 ).
下面是我写的代码
%的代码
听力读物('/home/LEFT/Setup tone low 20 LEFT .wav');
Y = audioread('/home/RIGHT/Setup tone low 20 RIGHT .wav');
Mix = [x y];
Fc = 700;
换能器=相控。OmnidirectionalMicrophoneElement...
“FrequencyRange”(200、1200));
阵列=相控。齿龈(“元素”传感器,“NumElements”2,...
“ElementSpacing”, 0.15);
yy = collectPlaneWave(array,[x y],[20 0;20 0]',fc);
sDOA =阶段性。RootMUSICEstimator (“SensorArray”数组,...
“OperatingFrequency”足球俱乐部,“NumSignalsSource”“属性”“NumSignals”1);
doas = step(sDOA,yy);
Az = broadside2az(sort(doas),[0 0])
在这里我使用两个单信号分别记录使用两个不同的麦克风(左和右)在一个ULA。从上面的程序,我得到一个完美的az = 20.0000 20.0000作为输出。
我的问题:-我已经近似的角度的声源大约20度方位角,所以我不期望声源在精确的20度评估算法。因此,输出似乎是因为collectPlaneWave函数参数。-我必须使用collectPlaneWave函数在我的真实世界的音频已经记录在一个特定的源角度?(我试着不使用这个,但算法给出的方位角总是零。)
你能帮我解决这个问题吗?谢谢。

接受的答案

宏磊陈
宏磊陈 2017年1月26日
在你的例子中,你模拟了20度的接收信号,这就是为什么估计结果是20度。在现实生活中,如果你已经有了信号,那么你不需要使用 collectPlaneWave .你只需要把记录的信号分成两个通道发送进去。也就是说,RootMUSIC只适用于窄带信号。这取决于你的设置,它可能是或不适合你的任务的算法。
顺便说一句,您还应该考虑设置传播速度。您将得到匹配的结果,因为组件之间的传播速度是一致的。然而,它们都被设置为光速。
HTH
1评论
莎拉·艾克
莎拉·艾克 2021年10月10日
是否有将记录的信号发送为2通道的例子?我正在工作类似的。wav文件分割成8个单独的通道。我看到的所有例子都是模拟信号,而不是使用实际的。wav文件,它们给出了一个令人困惑的角度。我很难找到导入.wav文件信息的正确方法,可以在任何波束形成方法中使用,以获得DOA。

登录发表评论。

更多答案(0)