How to use phased.MUSICEstimator with the miniDSP UMA-16????

조회 수: 8 (최근 30일)
Ron
Ron 2025년 7월 11일
답변: George 2025년 8월 4일
I have been working on a microhpone array: miniDSP UMA-16 using a self-made code but it is not efficient at all. I wish to use the inbuilt phased.MUSICEstimator function but I cannot understand how to input the "SensorArray" property value. Can someone please help me, I will be highly gratefull for your help?

답변 (2개)

Govind KM
Govind KM 2025년 7월 16일
Hi @Ron,
The "phased.MUSICEstimator" is a MATLAB system object which implements the narrowband multiple signal classification (MUSIC) algorithm for uniform linear arrays (ULA). To use this object for estimation of directions of arrival (DOA):
  • Create an estimator system object, specifying properties as needed.
estimator = phased.MUSICEstimator(Name,Value)
  • Call the created system object with arguments, as if it were a function.
[y,doas] = estimator(signal)
Here is sample code which creates a "phased.MUSICEstimator" system object, and specifies a ULA as the "SensorArray":
fc = 150.0e6;
array = phased.ULA('NumElements',10,'ElementSpacing',1.0);
estimator = phased.MUSICEstimator('SensorArray',array,...
'OperatingFrequency',fc);
Kindly refer to the example in the documentation page for "phased.MUSICEstimator" for more information on the avaiable properties and usage: https://www.mathworks.com/help/releases/R2023a/phased/ref/phased.musicestimator-system-object.html#bvcki7e
Hope this is helpful!
  댓글 수: 1
Ron
Ron 2025년 7월 17일
I am thankful for your answer, but if this does not help in anyway.

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


George
George 2025년 8월 4일
Hi Ron,
I have a couple of things to point out that may be helpful for you.
I took a quick look at the device that you are using to collect data, it appears to be a 4x4 uniform rectangular array (URA) of microphones. Here is an example of how you could define such a device. You will need to adjust the parameters according to the actual geometry of the board that you are using, you may need to dig around the datasheets for this data, but it should look something like this:
d = 0.25; % Element spacing - this needs to be adjusted for the actual array you are using
N = 4; % 4x4 URA
mic = phased.OmnidirectionalMicrophoneElement; % Assuming omni-directional, consider updating if you have more knowledge about the element patterns
array = phased.URA([N,N],[d,d],'Element',mic);
This "array", which models the real board that you are using, is what you would use as the "SensorArray" within the estimator objects.
I am not sure the format of your data, but because this is a microphone array I am going to assume that you are capturing wideband, real-valued, unmodulated data. A core underlying assumption of the MUSIC estimator is that the incoming signal is narrow band, I don't believe that this assumption will hold true for your audio data, so you may not be able to use the MUSIC estimator.
You most likely need to use a direction of arrival estimator that does not make a narrowband assumption, such as the GCC estimator, which looks at the true time delay of signals between array elements to determine direction of arrival. So, you might create an estimator like this:
c = 340; % Speed of sound
fs = 8e3; % This needs to be updated for your actual system
estimator = phased.GCCEstimator('SensorArray',array,'PropagationSpeed',c,'SampleRate',fs);
And use that estimator to determine angle of arrival. You can find more information about the GCC estimator and all of the available direction of arrival estimators in the following links:
Hopefully that helps,
George

카테고리

Help CenterFile Exchange에서 Direction of Arrival Estimation에 대해 자세히 알아보기

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by