How to create steering vector for MUSIC algorithm for Time of Arrival

13 views (last 30 days)
Hello
I am using the MUSIC algorithm for obtaining ToA for an indoor location system having a low bandwidth.
I am not sure how to create, what is often referred to as, the steering vector v(tau).
What i am doing in my simulations is:
  1. Create 100 realisations of a rician wireless channel, with known delays, e.g. at 40 and 50 sample delays using ricianchan().
  2. I am transmitting PRN code through the channel using the filter() function, length of the PRN code is 1023.
  3. After filtering the PRN code, i calculate the cross correlation with a replica of the code to obtain, what looks like the autocorrelation transmitted though the rician channel (filter), this become 1023*2-1 = 2045.
  4. Let's call the received signal r(t), which i now calculate the covariance matrix from using matlab built-in cov()-function, this becomes a 2045x2045 matrix.
  5. I then calculate the eigenvalue decomposition using eig() and sort the values to be in descending order.
  6. i check the stem-plot of the diagonal of D to check that only 2 significant signals are found, as only 2 delays are generated by the ricianchan() function, this seems correct.
  7. From the noise space eigenvectors and an interpolated version of the autocorrelation function that was transmitted through the filter, i calculate the noise spectrum. <- this is the step that i think is wrong, as i maybe need some kind of other steering matrix isntead of a "higher-resolution" autocorrelation function.
The code that i am using is:
step 1,2,3 as auto_PRN is the autocorrelation for the prn-code.
for i = 1 : 100
c1 = ricianchan(1,0.01,10,[40 50]);
c1.StoreHistory = 1;
y = filter(c1,auto_PRN);
temp(:,i) = y;
end
rt = temp(1023:end,:);
step 4,5,6
Cov_matrix = cov(temp');
[V D ] = eig(Cov_matrix);
[V D] = sortem(V,D);
stem(diag(D))
step 7
for j =1:1023*resolution;
a = autocorr_model(-j+1+1023*resolution:resolution:-j+resolution*2046)';
%a= a/norm(a);
tmp = 0;
for i = 3:1023;
tmp = tmp + abs(V(:,i)' * a)^2;
end
music_out(j) = 1/tmp;
end
where autocorr_model is a higher resolution of the autocorrelation of the PRN code transmitted through the channel. I am not quite sure if this is correct or i have to use som kind of steering vector formed as: exp(-j*2*pi*deltaF*tau) <- but im not quite sure of how to form this vector?
This is for my Masters project so any kind of help is really appreciated, and i have seen that the MUSIC is most often used for DOA but i can't interpret how to change the steering vector from spacial domain into time domain.

Answers (1)

Honglei Chen
Honglei Chen on 30 Mar 2017
I'm not sure if I follow your algorithm. Do you have a reference? The steering vector in some sense captures the system configuration. However, the system setting is missing in your description. There are also papers talking about using MUSIC in frequency domain but that also doesn't seem like what you do.
  1 Comment
Mathias Laursen
Mathias Laursen on 30 Mar 2017
Yes, sorry i diden't post those in the start: the algorithm is based on the following papers.
"System issues for time synchronization in Real Time Localization Systems with multi path mitigation" and "Time synchronization for Real Time Localization Systems with multi path mitigation" by Michael Marx

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!