ecosierra51
Newbie level 4
- Joined
- Feb 8, 2015
- Messages
- 5
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1
- Activity points
- 41
Here are a couple of points to consider:I am working now with 3 channel interferometer. Antennae are placed in right angle, number 0 to North, number 1 as reference, and number 2 to the East. I measure amplitud and difference of fase of signal from 0, respected to 1; and amplitud and difference of fase of signal from 2, respected to 1.
With azimuth and elevation defined as in my example, rx, ry and rz must be column vectors (not row vectors). Therefore, r =[rx, ry, rz].I modified array configuration, to 3 antennae orthogonally placed, as:
M = 2
N = 3
rx = [0, 0 ,1];
ry = [1, 0 ,0];
rz = [0, 0 ,0];
r = [rx; ry; rz];
You are correct - standard MUSIC generally does not work with fully correlated signals (i.e. where the magnitude of the complex correlation coefficient is equal to 1). The reason for this is that fully correlated signals together span only 1 dimension of the complex observation space. There are a few methods to solve this problem, but they may or may not be suitable for you:Signals can arrive from two DOAs: ground wave and ionosferic reflected wave.
I read about MUSIC don´t work with correlated signals.
Please, advise me about this problem.
x x x x
x x x x
x x x x
x x x x
x x x . . x x x . . . . . . . .
x x x . . x x x x x x . . x x x
x x x . . x x x x x x . . x x x
. . . . . . . . x x x . . x x x
[rx, ry, rz] = -0.5 -0.5 0
0.5 -0.5 0
-0.5 0.5 0
0.5 0.5 0
reversed = 0.5 0.5 0
-0.5 0.5 0
0.5 -0.5 0
-0.5 -0.5 0
In this case, it is not always best to approach the problem from an array processing perspective (since anything other than direction finding is essentially conventional signal processing and can also be solved using conventional methods). If the signal has good autocorrelation properties, then the delayed signal will have low cross-correlation with the direct signal. This means the two are fundamentally relatively easy to separate.It is very common that signals arrive with different time delays. For example, signal 1 propagates as ground wave, for 20 km; and signal 2 propagates as ionospheric wave, reflected in F2 layer at 300 km height.These rays have a difference near of 580 km. (2 miliseconds).
Please, explain how to manipulate the received data and received signal model, in order to apply “smoothing” methods.
How to analytically solve az/el for 2 peaks?
4) How to modify code to search Az for 360 degrees, in correspondence with orthogonal array?
So, we don't need to change the code much. The most important thing is that we cannot use a linear array to estimate elevation; we must have a 2D or 3D array (this is obvious if you think about the rotational symmetry of a linear array). Therefore, I changed the array to a uniform circular array.
Then, we just have to calculate a separate 1D azimuth spectrum for each elevation. Here is the modified code:
Code Matlab M - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 close all; clear all; clc; % ======= (1) TRANSMITTED SIGNALS ======= % % Signal source directions az = [35;39;127]; % Azimuths el = [63;14;57]; % Elevations M = length(az); % Number of sources % Transmitted signals L = 200; % Number of data snapshots recorded by receiver m = randn(M,L); % Example: normally distributed random signals % ========= (2) RECEIVED SIGNAL ========= % % Wavenumber vectors (in units of wavelength/2) k = pi*[cosd(az).*cosd(el), sind(az).*cosd(el), sind(el)].'; % Number of antennas N = 10; % Array geometry [rx,ry,rz] (example: uniform circular array) radius = 0.5/sind(180/N); rx = radius*cosd(360*(0:N-1).'/N); ry = radius*sind(360*(0:N-1).'/N); r = [rx, ry, zeros(N,1)]; % Matrix of array response vectors A = exp(-1j*r*k); % Additive noise sigma2 = 0.01; % Noise variance n = sqrt(sigma2)*(randn(N,L) + 1j*randn(N,L))/sqrt(2); % Received signal x = A*m + n; % ========= (3) MUSIC ALGORITHM ========= % % Sample covariance matrix Rxx = x*x'/L; % Eigendecompose [E,D] = eig(Rxx); [lambda,idx] = sort(diag(D)); % Vector of sorted eigenvalues E = E(:,idx); % Sort eigenvalues accordingly En = E(:,1:end-M); % Noise eigenvectors (ASSUMPTION: M IS KNOWN) % MUSIC search directions AzSearch = (0:1:180).'; % Azimuth values to search ElSearch = (0:1:90); % Elevation values to search % 2D MUSIC spectrum Z = zeros(length(AzSearch),length(ElSearch)); for i = 1:length(ElSearch) % Elevation search value el = ElSearch(i); % Points on azimuth array manifold curve to search (for this el) kSearch = pi*[cosd(AzSearch)*cosd(el), ... sind(AzSearch)*cosd(el), ... ones(size(AzSearch))*sind(el)].'; ASearch = exp(-1j*r*kSearch); % Compute azimuth spectrum for this elevation Z(:,i) = sum(abs(ASearch'*En).^2,2); end % Plot figure(); surf(AzSearch, ElSearch, -10*log10(Z.'/N)); shading interp; title('2D MUSIC Example'); xlabel('Azimuth (degrees)'); ylabel('Elevation (degrees)'); zlabel('MUSIC spectrum (dB)'); grid on; axis tight;
This produces a 2D spectrum like this:
View attachment 114265
Note that, for convenient viewing, I plot the negated spectrum. This means that we get peaks at the target directions (instead of nulls), which I find easier to view for the 2D case.
Of course, we don't have to stop at 2D. We can extend, for example, to 3D and 4D to estimate Doppler and time of arrival. This is interesting to experiment with in theory, but in practice a 3D or 4D exhaustive search is far too slow to compute. Instead, we normally find clever ways of reducing the problem (e.g. a 1D search for time of arrival, followed by a 2D azimuth-elevation search is much faster than an exhaustive 3D search).
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?