Solved

# Euclidean Distance list of lists c#

Posted on 2011-03-01
Medium Priority
836 Views
I am computing the euclidean distance between 2 lists of lists.
In the code that i provided they both have the same number of ROWS.
But what if they don't??
What can i do then?
Suppose that tab2 has 5 inner lists instead of 3:
`````` List<List<double>> tab2 = new List<List<double>>()
{
new List<double>() {3.8, 7.3, 2.1},
new List<double>() {3.3, 4.0, 5.5},
new List<double>() {4.2, 3.2, 4.2},
new List<double>() {4.2, 3.2, 4.2},
new List<double>() {4.2, 3.2, 4.2}
};
``````
``````static void Main(string[] args)
{
List<List<double>> tab1 = new List<List<double>>()
{
new List<double>() {3.3, 4.0, 5.5},
new List<double>() {4.2, 3.2, 4.2},
new List<double>() {3.8, 7.3, 2.1}
};
List<List<double>> tab2 = new List<List<double>>()
{
new List<double>() {3.8, 7.3, 2.1},
new List<double>() {3.3, 4.0, 5.5},
new List<double>() {4.2, 3.2, 4.2}
};

double sum2 = 0.0;
for (int idx1 = 0; idx1 < 3; ++idx1)
for (int idx2 = 0; idx2 < 3; ++idx2)
{
double delta = (tab1 [idx1][idx2] - tab2[idx1][idx2]);
sum2 += (delta * delta);
}

Console.WriteLine("Distance: {0}", Math.Sqrt(sum2));
}
``````
0

LVL 30

Accepted Solution

anarki_jimbel earned 2000 total points
ID: 35013504
I'm not quite sure what your lists represent. I suggest these are coordinates is some space.
In a plane we have distance between two points p = (p1, p2) and q = (q1, q2)  (each point has two coordinates):
dist = SQRT((p1-q1)^2 + (p2-q2)^2)

In 3D (p = (p1, p2,p3) and q = (q1, q2, q3):

dist = SQRT((p1-q1)^2 + (p2-q2)^2 + (p3 - q3)^2)

Really, innert list for me represents a point with 3D coordinates. So, distance between two inner lists of tab1 and tab2 has sense. Difference between lists tab1 and tab2 - a bit strange. Basicly, this is just a sum of all distances between separate points. In this case you may run loops with different limits, in your case 3 and 5 correspondingly. But I'm not sure about interpretation...

Also, as I pointed above, distance between two point is a square root of a sum of individual coordinate  deltas. Therefore you might need to get SQRT before summing distances for individual points...

``````List<List<double>> tab1 = new List<List<double>>();

List<List<double>> tab2 = new List<List<double>>();
tab2.Add(new List<double>(new double[]{3.8, 7.3, 2.1}));
tab2.Add(new List<double>(new double[]{3.3, 4.0, 5.5}));
tab2.Add(new List<double>(new double[]{4.2, 3.2, 4.2}));
tab2.Add(new List<double>(new double[]{4.2, 3.2, 4.2}));
tab2.Add(new List<double>(new double[]{4.2, 3.2, 4.2}));

double sum2 = 0.0;
for (int idx1 = 0; idx1 < tab1[0].Count; ++idx1){ //all list in tab1 have same count
for (int idx2 = 0; idx2 < tab2[0].Count; ++idx2) //all list in tab2 have same count
{
double delta = (tab1 [idx1][idx2] - tab2[idx1][idx2]);
sum2 += (delta * delta);
}
}
``````
0

Author Comment

ID: 35014886
But my problem with the size of the list you know. And i don't think that this can solve the problem because in:
``````double sum2 = 0.0;
for (int idx1 = 0; idx1 < tab1[0].Count; ++idx1){ //all list in tab1 have same count
for (int idx2 = 0; idx2 < tab2[0].Count; ++idx2) //all list in tab2 have same count
{
double delta = (tab1 [idx1][idx2] - tab2[idx1][idx2]);
sum2 += (delta * delta);
}
}
``````

You are just using the first List only and not the others.
I don't know how to compute as i said earlier if i have 2 lists of different size.
Should i add an empty list like:
I add a new list or call it dimension but with 0.0

like i  pass in both lists to a routine that looked to compute the maximum size of the two.  For example if you passed in tab1 and tab2 that were 3x3 and 4x4 respectivily, the routine would create two 4x4 items and use the code like I have shown earlier.
0

## Featured Post

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

## Join & Write a Comment Already a member? Login.

Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In this video I will demonstrate how to set up Nine, which I now consider the best alternative email app to Touchdown.
The video will let you know the exact process to import OST/PST files to the cloud based Office 365 mailboxes. Using Kernel Import PST to Office 365 tool, one can quickly import numerous OST/PST files to Office 365. Besides this, the tool also comes…
###### Suggested Courses
Course of the Month6 days, 3 hours left to enroll

#### 569 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.