List with "3 integer" entries - Find the closest entry to 3 entered integers


    Mar 27 2013 | 9:32 pm
    Hi,
    My problem is a bit complicated, especially since I'm not so used to visual programming.
    I have a list (it doesn't have to be a qlist) with predefined 128 entries/lines. Each entry has three integer values. They range from 0 to 127. Here is an example: 33 50 40 61 30 53 etc.
    I want to enter three integer values, find the one which is the closest and return it. An example: My entered number 37 52 42 would be really close to entry 1, so the output would be entry 1: 33 50 40
    I first thought about summing up all the values: 33 50 40 = 123 61 30 53 = 144 Entered number: 37 52 42 = 131 And than subtract the sum of the entries of the list with the sum of the entered number to find the smallest number: 131-123 = 8 131-144 = -13 The first entry is the closest.
    Unfortunately this isn't working. Imagine the following case: 55 27 40 = 122 95 3 2 = 100 My entry: 44 25 42 = 100
    The second value of the list would be the perfect fit according to the algorithm, but it isn't. The first entry would be a a lot better, as the individual integer values are much closer to the integers of my entry.
    So If I'm right, than I must find the entry with the smallest deviation of the individual integers. Like: 55 27 40 deviation of: -11 2 -2 to my entry 44 25 42 --- Highest number: 11 95 3 2 deviation of: 51 -24 38 to my entry 44 25 42 ------Highest number: 51
    First entry wins, how it should be.
    But how can I do this? Especially as it should be as fast as possible. This is a probably a complex problem, but I simply don't know how to start and where to look, as I´m not so used to max msp.
    I would appreciate every help! Thanks!

    • Mar 27 2013 | 10:41 pm
      Have a look to zsa.dist, it finds closest list using various algorithms. Or you can calculate yourself the distances between the input list and all the stored ones.
    • Mar 28 2013 | 1:52 am
      notwithstanding EJ's fine work, I'd probably just use pythagorean distance measure:
    • Mar 28 2013 | 9:25 am
      Wow, thanks so much Terry! Exactly what I need.