Hallo,
da die Zahlen im StringGrid als Zeichenketten vorliegen, musst du sie erst konvertieren:
Delphi-Quellcode:
uses
Math,
Types;
procedure DataToStrings(data: TDoubleDynArray; strings: TStrings; const fmt: string = '%f');
var
i: Integer;
begin
strings.Clear;
for i := Low(data) to High(data) do
strings.Add(Format(fmt, [Data[i]]));
end;
function StringsToData(strings: TStrings; default: Double = 0): TDoubleDynArray;
var
i: Integer;
begin
SetLength(Result, strings.Count);
for i := Low(Result) to High(Result) do
Result[i] := StrToFloatDef(strings[i], default);
end;
Als Parameter strings kannst du z.B. StringGrid.Rows[iRow] oder StringGrid.Cols[iCol] übergeben.
Die Berechnung des gleitenden Durchschnitts ist dann wahrscheinlich nicht mehr dein Problem.
Delphi-Quellcode:
uses
Math,
Types;
function SimpleMovingAverage(data: TDoubleDynArray; n: Word): TDoubleDynArray;
var
i: Integer;
temp: TDoubleDynArray;
begin
SetLength(Result, Length(data));
for i := Low(data) to High(data) do
begin
if i < n
then temp := Copy(data, 0, Succ(i)) // was: i (off by one)
else temp := Copy(data, Succ(i - n), n);
Result[i] := Mean(temp);
end;
end;
Getippt und nicht getestet.
Grüße vom marabu