Bin mir auch nicht sicher ob die von @Neutral General verwendete Funktion das 2D Array zu 1D Array zu konvertieren der richtige weg ist.
Delphi-Quellcode:
function Array2DTo1D(AArray: TArray2D): TArray1D;
var
y, x: Integer;
n: Integer;
begin
SetLength(Result, Length(AArray) * Length(AArray[0]));
n := 0;
for y := 0 to High(AArray) do begin
for x := 0 to High(AArray[y]) do begin
Result[n] := AArray[y,x];
inc(n);
end;
end;
end;
Ich bin mir vollkommen sicher dass die Funktion Array2DTo1D korrekt funktioniert, allerdings unter der Bedingung dass alle in SpectrumData2D enthaltenen Arrays die gleiche Länge haben. Das scheint in Deinem Projekt der Fall zu sein.
Die nachstehende Version liefert die gleichen Ergebnisse aber deutlich schneller (Laufzeit ca. 1/3 der obigen Version).
Auch hier gilt die Bedingung dass alle in SpectrumData2D enthaltenen Arrays die gleiche Länge haben.
Delphi-Quellcode:
FUNCTION xArray2DTo1D(AArray: TArray2D): TArray1D;
var I,Len,Size:Integer;
begin
Len:=Length(AArray[0]);
SetLength(Result, Length(AArray)*Len);
Size:=Len*SizeOf(Result[0]);
for I:=0 to High(AArray) do
Move(AArray[I,0],Result[I*Len],Size);
end;