How do I detect polynomial roots based on its correct angle of arrival?
2 次查看(过去 30 天)
显示 更早的评论
This is going to be long so I'll try to make this as simple to understand as possible.
Lets say I have 2 signals coming in at -70 and 30 degrees direction of arrival (DOA). (This information is not known to my algorithm)
After running my algorithm, I have the following polynomial roots:
rtsnew = 6×1 complex
1.888969808846177 + 1.539141923045358i
-0.987441502841464 + 0.192134546985814i
-0.975774744148857 + 0.189864450590462i
-0.010162047151777 - 1.016436952671105i
-0.009835057589599 - 0.983730523623119i
0.318160245354805 + 0.259238538159111i
Theoretically, we note that the polynomial roots closest to the unit circle correspond to the correct DOAs. I did this by using the following lines of code:
radius = abs(rtsnew) %find absolute value of roots
dist = abs(radius-1) %offset to determine roots closest to unit circle
[~,index] = mink(dist,N) %find and index element closest to unit circle. N is the number of signal detected - in this case its 2.
result = rtsnew(index) %reprint roots based on indexed element closest to unit circle
ang_results = -asin(angle(result)/pi)*180/pi %convert and determine angle
The results for ang_results are:
ang_results = 2×1
-69.865847945573620
-69.865847945573591
It seems that the 2 closest roots are the one corresponding for the -70 degree signal and had ignored the 30 degree signal. This is because the 2 roots closest to the unit circle correspond only for the -70 degree signal.
By running an angle conversion for all polynomials, the results are as follows:
all_ang_results = 6×1
-12.626217608844554
-69.865847945573591 %corresponding to -70 degree signal (2nd closest to unit circle)
-69.865847945573620 %corresponding to -70 degree signal (closest to unit circle)
30.136034517103869 %corresponding to 30 degree signal (4th closest to unit circle)
30.136034517103891 %corresponding to 30 degree signal (3rd closest to unit circle)
-12.626217608844549
As you can see, the roots corresponding to 30 degrees has been detected. But because its not the one closest to the unit circle, it has been ignored. How do I get the right roots for the right DOAs (i.e. I only want 1 root closest to unit circle for -70 & 30 only)? We can observe that the DOA comes in pairs (or close to it..).
It is important to note that the order of polynomial roots could be different. (i.e. closest to unit circle could be = -70 degrees. 2nd closest = 30 degrees. etc..).
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!