
ich habe ein Problem.
Und zwar versuche Messwerte miteinander zu vergleichen und dann den Mittelwert aus mehreren Messreihen zu bilden.
Dabei lese ich die Messwerte als String in eine Stringlist ein.
Das eigentliche Problem dabei ist, dass die Versuche nicht alle gleich lang gelaufen sind (die Stringlists ist also nicht immer gleich lang) und die Messwerte zu unterschiedlichen Zeiten aufgenommen wurden. Daher muss ich die Stringlisten miteinander vergleichen und dem entsprechenden Zeitintervall dann den richtigen Wert zuordnen.
BSP:
SlZeit1 SlWert1 SlZeit2 SlWert2
0 0,1 0 0,3
1 0,12 2 0,1
2 0,22 4 0,4
3 0,23 6 0,3
4 0,1
in Endeffekt soll dann man sowas rauskommen:
SlzeitErgeb SlWertErg
0 0,4
2 0,32
4 0,5
im Moment sortiere ich die Stringlist nach der Anzahl der Einträge und vergleiche anschließend die Werte der kleineren Stringlist mit der Größeren und ordne die Werte zu, allerdings dauert das bei teilweise 8000 Messwerten (pro Liste) zu lang.
Gibt es da einen Effektiveren weg? Bei mehreren hundert zu vergleichenden Listen würde das ja Tage dauern wenn ich jedweils 640000 Vergleiche habe

Code: Alles auswählen
if tmplist1z.Count < tmplist2z.Count then
begin
tmplist3z:=tmplist1z;
tmplist3m:=tmplist1m;
tmplist1z:=tmplist2z;
tmplist1m:=tmplist2m;
tmplist2z:=tmplist3z;
tmplist2m:=tmplist3m;
end;
begin
for k:=0 to tmplist2z.Count-2 do
begin
for j:=k to tmplist1z.Count-2 do
begin
if tmplist2z.ValueFromIndex[k]=tmplist1z.ValueFromIndex[j]
then
begin
tmplist2m.Insert(k,floattostr(strtofloat(tmplist1m.ValueFromIndex[j])+strtofloat(tmplist2m.ValueFromIndex[k])));
end;
end;
end;
end;