salve, ho un file con dentro delle velocità create da un computer da bicicletta,.. e a volte capita che non fa bene contatto e mi crea degli sbalzi di velocita sia in crescita sia in calo, e mi sono messo in testa di aggiustare logicamente il file in modo da avere una sinusoidale accettabile, per poi mostrarla graficamente in una Chart

tipo queta ma a volte la vedo così:

ho pensato di fare una Function che mi aggiusti un po il file.... per la chart con questo codice..
Function AggiustaFile(ByVal Str() AsSingle) AsList(OfDouble)
Dim Cr AsNewList(OfDouble)
'Valore massimo array
Dim Max AsSingle = Str.Max
' Valore Minimo array
Dim Min AsSingle = Str.Min
For x AsInteger = Min To Max Step 1.1
Cr.Add(x)
Next
For x AsInteger = Max To Min Step -1.1
Cr.Add(x)
Next
Return Cr.ToList
EndFunction
PrivateSub ButSistemaPunti_Click(sender AsObject, e AsEventArgs) Handles ButSistemaPunti.Click
Dim P AsNewList(OfDouble)
P.AddRange(AggiustaFile({"19.12", "22.52", "20.82", "23.42", "25.22", "20.82", "39.72", "36.72", "38.72", "39.72", "46.12",
"51.62", "55.12", "56.22", "61.02", "63.52", "68.62", "75.22", "75.22", "76.52", "80.72", "82.12", "85.02",
"88.02", "88.02", "94.02", "94.02", "97.12", "98.73", "02.03", "00.33", "06.93", "03.63", "06.93", "06.93",
"10.43", "10.43", "15.63", "12.13", "13.83", "13.83", "13.83", "15.63", "15.63", "15.63", "13.83", "17.43",
"17.43", "19.23", "19.23", "19.23", "15.63", "19.23", "13.83", "15.63", "17.43", "17.43", "10.43", "15.63",
"10.43", "13.83", "13.83", "12.13", "15.63", "13.83", "13.83", "10.43", "13.83", "12.13", "13.83", "12.13",
"12.13", "13.83", "13.83", "13.83", "13.83", "12.13", "12.13", "12.13", "12.13", "10.43", "12.13", "12.13",
"13.83", "12.13", "13.83", "12.13", "13.83", "12.13", "17.43", "13.83", "15.63", "13.83", "13.83", "15.63",
"13.83", "13.83", "15.63", "12.13", "15.63", "13.83", "13.83", "12.13", "12.13", "13.83", "12.13", "13.83",
"15.63", "10.43", "13.83", "13.83", "15.63", "13.83", "15.63", "15.63", "13.83", "15.63", "17.43", "13.83",
"17.43", "15.63", "17.43", "15.63", "15.63", "15.63", "15.63", "13.83", "17.43", "13.83", "13.83", "13.83",
"13.83", "10.43", "10.43", "21.13", "17.43", "26.73", "26.73", "34.53", "32.53", "36.53", "42.73", "42.73",
"51.33", "49.23", "49.23", "51.33", "51.33", "53.63", "53.63", "60.43", "60.43", "55.83", "62.83", "60.43",
"60.43", "65.13", "62.83", "62.83", "62.83", "67.53", "65.13", "67.53", "62.83", "67.53", "65.13", "67.53",
"65.13", "67.53", "62.83", "65.13", "65.13", "62.83", "65.13", "65.13", "62.83", "62.83", "62.83", "62.83",
"65.13", "65.13", "60.43", "62.83", "62.83", "60.43", "62.83", "62.83", "62.83", "60.43", "60.43", "58.13",
"58.13", "58.13", "55.83", "55.83", "58.13", "55.83", "55.83", "53.63", "55.83", "58.13", "53.63", "60.43",
"60.43", "60.43", "62.83", "65.13", "65.13", "70.03", "70.03", "72.43", "72.43", "70.03", "82.63", "72.43",
"74.93", "85.33", "82.63", "85.33", "82.63", "82.63", "85.33", "88.03", "85.33", "88.03", "82.63", "80.03",
"74.93", "67.53", "70.03", "67.53", "65.13", "60.43", "60.43", "55.83", "55.83", "55.83", "53.63", "49.23",
"49.23", "44.83", "42.73", "40.63", "36.53", "38.63", "36.53", "38.63", "36.53", "34.53", "38.63", "36.53",
"34.53", "34.53", "32.53", "38.63", "34.53", "36.53", "38.63", "42.73", "44.83", "42.73", "44.83", "44.83",
"42.73", "47.03", "47.03", "47.03", "49.23", "49.23", "51.33", "51.33", "53.63", "53.63", "53.63", "55.83",
"55.83", "53.63", "60.43", "58.13", "58.13", "58.13", "58.13", "58.13", "55.83", "58.13", "60.43", "58.13",
"58.13", "60.43", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13",
"58.13", "55.83", "58.13", "55.83", "55.83", "58.13", "55.83", "60.43", "58.13", "60.43", "58.13", "60.43",
"60.43", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13", "58.13", "55.83", "58.13", "58.13", "58.13",
"58.13", "60.43", "58.13", "58.13", "60.43", "58.13", "58.13", "58.13", "62.83", "53.63", "55.83", "60.43",
"55.83", "58.13", "58.13", "60.43", "55.83", "55.83", "55.83", "53.63", "53.63", "53.63", "53.63", "51.33",
"51.33", "49.23", "49.23", "49.23", "47.03", "47.03", "44.83", "44.83", "42.73", "42.73", "40.63", "40.63",
"38.63", "36.53", "34.53", "32.53", "32.53", "28.63", "24.83", "24.83", "21.13", "19.23", "15.63", "15.63",
"17.43", "13.83", "13.83", "10.43", "10.43", "12.13", "13.83", "12.13", "13.83", "12.13", "13.83", "13.83",
"12.13", "12.13", "12.13", "12.13", "10.43", "10.43", "13.83", "10.43", "08.63", "06.93", "05.33", "03.63",
"06.93", "02.03", "05.33", "02.03", "02.03", "00.33", "02.03", "00.32", "95.62", "94.02", "92.52", "89.42",
"88.02", "85.02", "80.72", "76.52", "77.92", "76.52", "79.32", "71.22", "67.32", "63.52", "63.52", "59.82",
"61.02", "62.32", "64.72", "63.52", "61.02", "57.42", "57.42", "58.62", "57.42", "51.62", "52.82", "50.52",
"50.52", "43.92", "43.92", "41.82", "39.72", "35.72", "32.82", "30.82", "28.92", "27.12", "23.42", "17.42",
"16.52", "10.82", "13.22", "08.42", "05.42", "02.41", "98.81", "98.11", "97.41", "96.01", "90.61", "90.61",
"91.31", "88.11", "85.61", "83.71", "81.41", "80.21", "73.51", "76.21", "75.61", "71.31", "65.71", "62.81",
"61.01", "58.21", "54.31", "52.21", "49.71", "48.51", "48.91", "46.6"}))
Using sw AsStreamWriter = NewStreamWriter("c:\dd.txt")
ForEach g In P
sw.WriteLine(g.ToString)
Next
sw.Close()
sw.Dispose()
EndUsing
EndSub
come si nota prendo
il max e il min e ciclo la prima parte e poi la seconda in modo da ottenere una
sinusoidale ma forse voi avete una soluzione più adeguata cosa ne dite ? mi aiutate ?