Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Prozentuale Ähnlichkeit (Mustererkennung)

  Alt 10. Okt 2007, 07:26
Zitat von stahli:
Proz 3,5:-0,5 -> Diff=-4 -> Ähnlichkeit=80%

Nicht doch eher soetwas wie -114% (also: gar nicht ähnlich)?

Ich würde mir eine Funktion schreiben, die zwei Tupel miteinander vergleicht, und den Ähnlichkeitsindex (0..1 oder 0..100) zurückliefert. Im Prinzip hast Du das ja gemacht, aber eine Funktion zentralisiert diese Entscheidungslogik und macht es imho übersichtlicher. Vielleicht solltest Du auch nicht von 'Ähnlichkeit' sprechen, sondern von einem 'Abstand', aber das ist Wortklauberei.

Für den Zugriff auf die Tupel sowohl als Array als auch auf die individuellen Werte würde ich einen 'variant record' verwenden.
Delphi-Quellcode:
Type
  TValues = Record
    Case Boolean Of
      False : (Sta, Proz, Gl1, Gl2, Gl3, Gl4 : Double); // Individueller Zugriff
      True : (Values : Array [0..5] Of Double); // Indizierter Zugriff
  End;
Und die Funktion selbst so deklarieren;

Delphi-Quellcode:
Function SimilarityIndex (Const A,B : TValues) : Double;
Begin
....
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat