Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This is my first question on SE so let me know if I'm not asking my question in the right place.

So basically, I have an algorithm which uses UMTS measurement events for positioning estimation, which I'm in the process of programming in Matlab.

Specifically, I take as an input, among other things, the LL coordinates of the first estimation. The first step is computing τk(i) = || yNB(i) -yk || / c (where yk is the position). I use the haversine formula to find the distance between yNB and yk.

Eventually, I get to the last step which is a minimizing a cost function:

ρk =|| {rk (1,2) − dk (1,2)
        rk (1,3) − dk (1,3)
        . . .
        rk (i,j) − dk (i,j)} ||

where dk (i,j) = || yNB(i) - yk || - || yNB(j) - yk ||

Then, the new estimation of yk is used on the next iteration to compute a better value for τk and so on.

So my question is, how do I "retrieve" yk to use on the next iteration? Because by calculating the distance at the first step I "lose" the position ( i use a function like: Distance=Haversine(lat1,long1,lat2,long2)).

Plus, what's the best way to program the cost function minimization in Matlab? Does anyone have an idea of how I can make this work? Thank you!

EDIT: I was told that my "minimizing a cost function" problem might be actually an RLS problem: if find a way to convert to an (X,Y) system instead of (LAT,LONG), I'll have a system of equations as follows:

ρk =|| {rk (1,2) − dk (1,2)
            rk (1,3) − dk (1,3)
            . . .
            rk (i,j) − dk (i,j)} ||


rk(i,j) = c (TOTD, k (i) - TOTD, k (j) - TRTD(i,j))
dk (i,j) = || yNB(i) - yk || - || yNB(j) - yk ||

With the objective of minimizing k. Right?

I have values for c (velocity), TOTD and TRTD (time differences), and yNB=[XYNB YYNB] (position), so all I'm missing is the position vector yk=[X Y]...

Since || P1 - P2 || is sqrt((x1-xo)^2 + (y1-y0)^2), by either:

A: linearizing the equations as a Taylor series and then applying linear RLS B: applying nonlinear RLS

I should be able to retrieve the values yNB=[XYNB YYNB], right? How can I program it (either via A or B)?

PS: I'm working with distances never bigger than 10km, and I'm not taking altitude into account (2D level)

share|improve this question
you can make a temp variable to store yk? also, your min cost flow looks a simple curve fitting prob. Say y = Ax; where A is redundancy matrix, y is set of observations; then in matlab you can do x=y\A; (which is a least square estimation). Please explain if i get it right. – Naresh Jul 22 '13 at 10:22
My problem is not the storing itself, it's that I need to make sure that the position variable changes on each iteration. Because || yNB(i) - yk || is actually a distance, and I'm not seeing how I can make it change! – TFSP Jul 22 '13 at 14:39
Also, I should probably do all of this in ECEF, right? – TFSP Jul 23 '13 at 0:38
coordinates should not be a problem. Once you have distances, you have your network. you solved? If not, put some details about how you are implementing. I will have a look in the evening again. Hopefully I can help. – Naresh Jul 24 '13 at 13:53
Thank you! I edited the question for you. – TFSP Jul 25 '13 at 2:26

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.