필터 지우기
필터 지우기

How to use frost beamformer using "external" signal ?

조회 수: 2 (최근 30일)
Tamir
Tamir 2013년 1월 28일
편집: Carey Bunks 2019년 1월 28일
Hello, I am trying to use Frost Beamformer based on phased array tool box.
The experiment includes 8 microphone spaced at : 3cm, liniary arranged.
The results of the beam-former are poor and it seems that I guess there is an error in the way i use it.
1) I record the signal using an array and then define a "new" array in the code using ULA, Is it a source for a problem ?
2) Does the tool box supports "External signal" ? close all; clear all;clc;
FirLen=10; % Post Beamforming Filter Length
spacing=0.03; % Spacing between microphones [m]
c = 340; % sound speed, in m/s
ang_dft = [0;0];
fs = 15625; % Sampling Frequncy
sigArray=[rmic1,emic1,rmic2,emic2,rmic3,emic3,rmic4,emic4];
Nele=size(sigArray,2);
[FrostENG,FrostDLENG,FrostOut,FrostOut_dl]=FrostBeamFormer(sigArray,FirLen,Nele,spacing,c,ang_dft,fs);
function [agFrost,agFrost2_dl,FrostOut,FrostOut2_dl]=FrostBeamFormer(sigArray, FirLen,Nele,spacing,c,ang_dft,fs)
hmic = phased.OmnidirectionalMicrophoneElement; % Microphone type
ha = phased.ULA(Nele,spacing,'Element',hmic); % Microphone array
ha.Element.FrequencyRange = [20 20000]; NSampPerFrame = size(sigArray,1);
hsig = dsp.SignalReader('Signal',sigArray,'SamplesPerFrame',NSampPerFrame);
hbf = phased.FrostBeamformer('SensorArray',ha,'SampleRate',fs,... 'PropagationSpeed',c,'FilterLength',FirLen,'DirectionSource','Input port','WeightsOutputPort',true);
reset(hsig);
[FrostOut,W] = step(hbf,step(hsig),ang_dft);
plotResponse(ha,fs,c,'RespCut','Az','Format','Polar'); % Polar plot
release(hbf);
release(hsig);
Best Regards, Tamir
  댓글 수: 2
Ashwini Srivastava
Ashwini Srivastava 2015년 8월 31일
Were you able to solve this problem using external signal ?
Honglei Chen
Honglei Chen 2015년 9월 2일
Could you clarify you question? What do you mean the result is poor? Does the setting of ULA match what you use to record the signal?

댓글을 달려면 로그인하십시오.

답변 (1개)

Carey Bunks
Carey Bunks 2019년 1월 28일
편집: Carey Bunks 2019년 1월 28일
I have experimented with several beamforming examples available on the Mathworks website using real audio waveforms but with simulated antenna responses (using the phased.WidebandCollector object). Under these conditions, the Frost beamformer produces very good results. That's to say the power output of the array shows peaks at the correct simulated angular positions for each source, and the beamformer signal output properly separates the sources when the array is steered to the appropriate angular directions.
That said, I have found several PhD theses and other references on the web that report the Matlab Frost beamformer implementation gives poor results when used with a real acoustic antenna array. For example, see Section 7.3.3 in this dissertation:
Of course a simulated antenna array and a real one have the important difference in that the former is an idealized model, and for the latter there are likely small inconsitencies that will crop up in the steering vector. For example, he relative positions of the antenna elements may be irregular or have other small errors. The individual sensor beam patterns may not be perfectly omnidirectional. Nevertheless, as discussed in Section 6 of Frost's original paper, his beamformer has a built in feature that is supposed to be robust to small errors.
This suggests that the Mathworks' Frost beamformer may have some implementation errors. I'll know more in a couple of weeks after I've coded my own version of the Frost beamformer. In another thread I've asked whether it is possible to see the internal code for the Mathworks' toolkit objectt.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by