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函数在我的真实世界的音频已经记录在一个特定的源角度?(我试着不使用这个,但算法给出的方位角总是零。)
你能帮我解决这个问题吗?谢谢。
0评论
接受的答案
宏磊陈
2017年1月26日
在你的例子中,你模拟了20度的接收信号,这就是为什么估计结果是20度。在现实生活中,如果你已经有了信号,那么你不需要使用
collectPlaneWave
.你只需要把记录的信号分成两个通道发送进去。也就是说,RootMUSIC只适用于窄带信号。这取决于你的设置,它可能是或不适合你的任务的算法。
顺便说一句,您还应该考虑设置传播速度。您将得到匹配的结果,因为组件之间的传播速度是一致的。然而,它们都被设置为光速。
HTH