The SDL Component Suite is an industry leading collection of components supporting scientific and engineering computing. Please visit the SDL Web site for more information.... |
Home MathPack Matrix Interface of SDL_Matrix | |
See also: TMat4D | |
Interface of SDL_Matrix |
|
const {$IFDEF PAIDVERS} SDLVersionInfo = 'matrix_r1200_full'; IsLightEd = false; {$ELSE} SDLVersionInfo = 'matrix_r1200_lighted'; IsLightEd = true; {$ENDIF} Release = 1200; type ESDLMatrixError = class(ESDLError); { exception type to indicate errors } TMatXmlTag = (xmlMatNumCols, xmlMatNumRows, xmlMatNumLayers, xmlMatNumTimeSlots, xmlMatCell, xmlMatBegin, xmlMatEnd, xmlInvalid); TDistMode = (dmJaccard, dmManhattan, dmEuclid, dmEuclidSqr, dmDice, dmUserDef); TEdgeOp = (eopMin, eopMax, eopSum, eopMean); TOnCalcDistanceEvent = procedure (Sender: TObject; Row1, Row2: integer; var Distance: double) of object; TOnReadMat4DElementEvent = procedure (Sender: TObject; ix, iy, il, it: integer; Value: double) of object; TSpMatElemInt = record colidx : longint; rowidx : longint; value : longint; end; TNormType = (ntColwise, ntRowwise, ntSpectral, ntFrobenius); const DistModeId : array[TDistMode] of string = ('Jaccard coefficient', 'Manhattan', 'Euclidean', 'squared Euclidean', 'Dice coefficient', 'user defined'); type TMat3D = class; TIntMatrix = class (TComponent) private FNCol : longint; { number of columns } FNRow : longint; { number of rows } FDataID : string; { tag to identify the data } FIsSparse : boolean; { TRUE: sparse matrix } FNumAllocated : longint; { number of allocated sparse elements } FAllocBy : longint; { incr. of alloc. for sparse matrix } FSparseNumElem : longint; { number of elements in sparse matrix } FSparseLowCol : longint;{ index of lowest column in sparse mat } FSparseHighCol : longint;{index of highest column in sparse mat } FSparseLowRow : longint; { index of lowest row in sparse mat } FSparseHighRow : longint; { index of highest row in sparse mat } SpMat : array of TSpMatElemInt;{ sparse matrix container } Mat : array of array of integer; { matrix data } FOnChange : TNotifyEvent; FOnPercentDone : TOnPercentDoneEvent; FOnSortExchange : TSortExchgEvent; {$IFDEF PAIDVERS} FirstCell : boolean;{flag to resize matrix during XML input } function ProcessXmlTag (xmlTag: TMatXmlTag; attr, cont: string): integer; {$ENDIF} function GetVal (Nc,Nr: longint): integer; procedure PercDone (Sender: TObject; Percent: longint); procedure SetVal (Nc,Nr: longint; Value: integer); procedure SetNCols (value: longint); procedure SetNRows (value: longint); procedure SkewKurtIntern (LowCol, LowRow, HighCol, HighRow: integer; var Skewness, Kurtosis: double; var NumData: longint); protected procedure SortExchange (ExchgWhat: byte; index1, index2, first, last: longint); public constructor Create (AOwner: TComponent); override; constructor CreateSparse (AOwner: TComponent; AllocBy: longint); destructor Destroy; override; property Elem[ix,iy: longint]: integer read GetVal write SetVal; default; function Add (MatB: TIntMatrix): boolean; procedure ArrayToSparse (AllocBy: longint); procedure Changed; procedure Clone (MatSource: TIntMatrix); {$IFNDEF DOTNET} function CRCofData: string; {$ENDIF} procedure CopyColToVec (DestVec: TIntVector; Col, FirstRow, LastRow: integer); procedure CopyFrom (MatSource: TIntMatrix; SourceColLo, SourceRowLo, SourceColHi, SourceRowHi, DestCol, DestRow: integer); procedure CopyFromArray (SrcArray: TInt2DArray; Col, Row: integer); procedure CopyToArray (var DestArray: TInt2DArray; LowCol, HighCol, LowRow, HighRow: integer); procedure CopyRowToVec (DestVec: TIntVector; Row, FirstCol, LastCol: integer); function CountValues (LowCol, HighCol, LowRow, HighRow: integer; RangeLow, RangeHigh: integer): integer; function CountMaskedZeros (LowCol, HighCol, LowRow, HighRow: integer; Bitmask: longword): integer; function Dichotomize (Threshold: integer; var ResultArray: TBool2DArray): integer; procedure EdgeVector (Orient: TOrientation; EdgeOp: TEdgeOp; var DestVec: TVector); function EMult (MatB, MatRes: TIntMatrix): boolean; procedure ExchangeColumns (c1,c2: integer); procedure ExchangeRows (r1,r2: integer); procedure Fill (value: integer); procedure FillDiag (value: integer); procedure Find (LowCol, HighCol, LowRow, HighRow: integer; Value: integer; var ColIx, RowIx: integer); function FindInSortedColumn (Col: integer; ColIsAscending: boolean; Value: integer): integer; function GeometricMean (LowCol, LowRow, HighCol, HighRow: integer): double; function HarmonicMean (LowCol, LowRow, HighCol, HighRow: integer): double; {$IFNDEF DOTNET} procedure LoadBinary (FName: string); {$ENDIF} function LoadFromFile (FileName: string; AdjustMatrixSize: boolean): boolean; function LoadFromStream (InStream: TMemoryStream; AdjustMatrixSize: boolean): boolean; overload; function LoadFromStream (InStream: TFileStream; AdjustMatrixSize: boolean): boolean; overload; function LoadFromXMLFile (FName: string; DataID: string): boolean; function LoadSparseMat (FileName:string): boolean; procedure MakeValidColRange (var LowCol, HighCol: integer); procedure MakeValidRowRange (var LowRow, HighRow: integer); procedure MeanVar (LowCol, LowRow, HighCol, HighRow: integer; var Mean, Variance: double); procedure MeanVec (Dim: TDims; Means: TVector); procedure MinMax (LowCol, LowRow, HighCol, HighRow: integer; var Minimum, Maximum: integer); procedure MirrorColumns; procedure MirrorRows; function Multiply (MatB, MatRes: TIntMatrix): boolean; overload; function Multiply (VecB, VecRes: TIntVector): boolean; overload; function MultiplyTransposed (MatB, MatRes: TIntMatrix): boolean; function Percentile (prob: double; LowCol, LowRow, HighCol, HighRow: integer): double; overload; function Percentile (prob: double; LowCol, LowRow, HighCol, HighRow: integer; SampleSize: integer): double; overload; function Quartiles (LowCol, LowRow, HighCol, HighRow: integer; var Q1, Q2, Q3: double): boolean; {$IFNDEF DOTNET} function ReadBinaryHeader (FName: string; var NrColumns, NrRows: integer; var DataID: string): boolean; {$ENDIF} function ReadFromOpenXMLFile (var InFile: TextFile; DataID: string): boolean; function ReadFromXMLStream (InStream: TStream; DataID: string): boolean; function Resize (Nc, Nr: longint): boolean; function ResizeAndClear (Nc, Nr: longint): boolean; procedure SaveAsXMLFile (FName: string; DataID: string); {$IFNDEF DOTNET} procedure SaveBinary (FName: string); {$ENDIF} procedure SaveToStream (var OutStream: TMemoryStream; LoC,LoR,HiC,HiR: integer); overload; procedure SaveToStream (var OutStream: TFileStream; LoC,LoR,HiC,HiR: integer); overload; procedure SkewKurt (LowCol, LowRow, HighCol, HighRow: integer; var Skewness, Kurtosis: double); procedure SkewKurtSample (LowCol, LowRow, HighCol, HighRow: integer; var Skewness, Kurtosis: double); procedure SAdd (Scalar: integer); procedure SMult (Scalar: integer); procedure SortCols (SortRowIx: integer; Ascending: boolean; LowCol, LowRow, HighCol, HighRow: integer); procedure SortRows (SortColIx: integer; Ascending: boolean; LowCol, LowRow, HighCol, HighRow: integer); procedure SparseToArray; function StoreOnFile (LoC,LoR,HiC,HiR: integer; FileName:string): boolean; function StoreSparseMat (FileName:string): boolean; function Subtract (MatB: TIntMatrix): boolean; function Sum (LoC,LoR,HiC,HiR: integer): longint; function Trace: longint; function Transpose: boolean; function TransposeAndMultiply (MatB, MatRes: TIntMatrix): boolean; overload; function TransposeAndMultiply (VecB, VecRes: TIntVector): boolean; overload; procedure WriteToOpenXMLFile (var OutFile : TextFile; CreateHeader: boolean; DataID: string); procedure WriteToXMLStream (OutStream: TStream; CreateHeader: boolean; DataID: string); published property DataID: string read FDataID write FDataID; property NrOfColumns: longint read FNCol write SetNCols; property NrOfRows: longint read FNRow write SetNRows; property OnChange: TNotifyEvent read FOnChange write FOnChange; property OnSortExchange: TSortExchgEvent read FOnSortExchange write FOnSortExchange; property OnPercentDone: TOnPercentDoneEvent read FOnPercentDone write FOnPercentDone; end; TMatrix = class (TComponent) private FNCol : longint; { number of columns } FNRow : longint; { number of rows } FDataID : string; { tag to identify the data } FPrecis : array[1..2] of integer; { used in StoreOnFile } FOnChange : TNotifyEvent; FOnSortExchange : TSortExchgEvent; FOnCalcDist : TOnCalcDistanceEvent; Mat : TDouble2DArray; // array of array of double; {$IFDEF PAIDVERS} FirstCell : boolean; {flag to resize matrix during XML input } function ProcessXmlTag (xmlTag: TMatXmlTag; attr, cont: string): integer; {$ENDIF} function GetVal (Nc,Nr: longint): double; procedure SetVal (Nc,Nr: longint; Value: double); function GetFPrecis (ix: integer): integer; procedure SetFPrecis (ix: integer; value: integer); procedure SetNCols (value: longint); procedure SetNRows (value: longint); procedure SkewKurtIntern (LowCol, LowRow, HighCol, HighRow: integer; var Skewness, Kurtosis: double; var NumData: longint); protected procedure AssignTo (Dest: TPersistent); override; procedure SortExchange (ExchgWhat: byte; index1, index2, first, last: longint); public constructor Create (AOwner: TComponent); override; destructor Destroy; override; procedure Assign(Source: TPersistent); override; property Elem[ix,iy: longint]: double read GetVal write SetVal; default; function Add (MatB: TMatrix): boolean; function Balance: boolean; function CalcDistMat (Mode: TDistMode; DMat: TMatrix): integer; procedure Changed; function CholeskyDecomp (var MatL: TMatrix): boolean; {$IFNDEF DOTNET} function CRCofData: string; {$ENDIF} procedure CopyColToVec (DestVec: TVector; Col, FirstRow, LastRow: integer); procedure CopyFrom (MatSource: TMatrix; SourceColLo, SourceRowLo, SourceColHi, SourceRowHi, DestCol, DestRow: integer); overload; procedure CopyFrom (MatSource: TIntMatrix; SourceColLo, SourceRowLo, SourceColHi, SourceRowHi, DestCol, DestRow: integer); overload; procedure CopyFrom (MatSource: TMat3D; SourceColLo, SourceRowLo, SourceColHi, SourceRowHi, SourceLayer, DestCol, DestRow: integer); overload; procedure CopyFromArray (SrcArray: TDouble2DArray; Col, Row: integer); procedure CopyToArray (var DestArray: TDouble2DArray; LowCol, HighCol, LowRow, HighRow: integer); function Correlate (OtherMat: TMatrix): double; procedure Clone (MatSource: TMatrix); procedure CopyFromVec (VecSource: TVector; Source1stElem, SourceLastElem, DestCol, DestRow: integer); overload; procedure CopyFromVec (Dim: TDims; VecSource: TVector; Source1stElem, SourceLastElem, DestCol, DestRow: integer); overload; procedure CopyRowToVec (DestVec: TVector; Row, FirstCol, LastCol: integer); function CountValues (LowCol, HighCol, LowRow, HighRow: integer; RangeLow, RangeHigh: double): integer; function Dichotomize (Threshold: double; var ResultArray: TBool2DArray): integer; function Square (MatRes: TMatrix; Norm: double): boolean; overload; function Square (MatRes: TMatrix; Norm: double; NThreads: integer): boolean; overload; function Determinant: double; procedure Diff(Order: integer); function DistanceOfObjects (Mode: TDistMode; obj1, obj2: integer): double; function EMult (MatB, MatRes: TMatrix): boolean; procedure EdgeVector (Orient: TOrientation; EdgeOp: TEdgeOp; var DestVec: TVector); procedure ExchangeColumns (c1,c2: integer); procedure ExchangeRows (r1,r2: integer); procedure Fill (value: double); procedure FillDiag (value: double); procedure FillRandomUniform (RangeLow, RangeHigh: double); procedure FillRandomGauss (Mean, StdDev: double); procedure Find (LowCol, HighCol, LowRow, HighRow: integer; Value: double; var ColIx, RowIx: integer); function FindInSortedColumn (Col: integer; ColIsAscending: boolean; Value: double): integer; procedure Free; function GeometricMean (LowCol, LowRow, HighCol, HighRow: integer): double; function HarmonicMean (LowCol, LowRow, HighCol, HighRow: integer): double; function Histogram (LoX, LoY, HiX, HiY: longint; FirstBin, LastBin, BinWidth: double; Histo: TIntVector; var Underflow, Overflow, MaxCnt: longint): boolean; function Invert: boolean; {$IFNDEF DOTNET} procedure LoadBinary (FName: string); {$ENDIF} function LoadFromFile (FileName: string; AdjustMatrixSize: boolean): boolean; overload; function LoadFromFile (FileName: string; AdjustMatrixSize, AutoDetect: boolean): boolean; overload; function LoadFromStream (InStream: TMemoryStream; AdjustMatrixSize: boolean): boolean; overload; function LoadFromStream (InStream: TFileStream; AdjustMatrixSize: boolean): boolean; overload; function LoadFromXMLFile (FName: string; DataID: string): boolean; function LUdecomposition (var MatL, MatU: TMatrix; var NumPerm: integer): boolean; procedure MakeValidColRange (var LowCol, HighCol: integer); procedure MakeValidRowRange (var LowRow, HighRow: integer); procedure MeanCenterColumns (Means: TVector); procedure MeanCenterRows (Means: TVector); procedure MeanVar (LowCol, LowRow, HighCol, HighRow: integer; var Mean, Variance: double); procedure MeanVec (Dim: TDims; Means: TVector); procedure MinMax (LowCol, LowRow, HighCol, HighRow: integer; var Minimum, Maximum: double); procedure MirrorColumns; procedure MirrorRows; function Multiply (MatB, MatRes: TMatrix): boolean; overload; function Multiply (VecB, VecRes: TVector): boolean; overload; function MultiplyTransposed (MatB, MatRes: TMatrix): boolean; function Norm (nt: TNormType): double; function Percentile (prob: double; LowCol, LowRow, HighCol, HighRow: integer): double; overload; function Percentile (prob: double; LowCol, LowRow, HighCol, HighRow: integer; SampleSize: integer): double; overload; property Precision [Index: integer]: integer read GetFPrecis write SetFPrecis; procedure QNormalizeColumns (RefQuant: double; Medians, QuantDiffs: TVector); procedure QNormalizeRows (RefQuant: double; Medians, QuantDiffs: TVector); function Quartiles (LowCol, LowRow, HighCol, HighRow: integer; var Q1, Q2, Q3: double): boolean; {$IFNDEF DOTNET} function ReadBinaryHeader (FName: string; var NrColumns, NrRows: integer; var DataID: string): boolean; {$ENDIF} function ReadFromXMLStream (InStream: TStream; DataID: string): boolean; function ReadFromOpenXMLFile (var InFile: TextFile; DataID: string): boolean; function Resize (Nc, Nr: longint): boolean; function ResizeAndClear (Nc, Nr: longint): boolean; procedure SaveAsXMLFile (FName: string; DataID: string); {$IFNDEF DOTNET} procedure SaveBinary (FName: string); {$ENDIF} procedure SaveToStream (var OutStream: TMemoryStream; LoC,LoR,HiC,HiR: integer); overload; procedure SaveToStream (var OutStream: TFileStream; LoC,LoR,HiC,HiR: integer); overload; procedure SkewKurt (LowCol, LowRow, HighCol, HighRow: integer; var Skewness, Kurtosis: double); procedure SkewKurtSample (LowCol, LowRow, HighCol, HighRow: integer; var Skewness, Kurtosis: double); procedure SAdd (Scalar: double); procedure SMult (Scalar: double); procedure SortCols (SortRowIx: integer; Ascending: boolean; LowCol, LowRow, HighCol, HighRow: integer); procedure SortRows (SortColIx: integer; Ascending: boolean; LowCol, LowRow, HighCol, HighRow: integer); procedure StandardizeColumns (Means, StdDevs: TVector); procedure StandardizeRows (Means, StdDevs: TVector); function StoreOnFile (LoC,LoR,HiC,HiR: integer; FileName:string): boolean; function Subtract (MatB: TMatrix): boolean; function Sum (LoC,LoR,HiC,HiR: integer): double; function Transpose: boolean; function TransposeAndMultiply (MatB, MatRes: TMatrix): boolean; overload; function TransposeAndMultiply (VecB: TVector; VecRes: TVector): boolean; overload; function Trace: double; procedure WriteToOpenXMLFile(var OutFile : TextFile; CreateHeader: boolean; DataID: string); procedure WriteToXMLStream (OutStream: TStream; CreateHeader: boolean; DataID: string); published property NrOfColumns: longint read FNCol write SetNCols; property NrOfRows: longint read FNRow write SetNRows; property DataID: string read FDataID write FDataID; property OnChange: TNotifyEvent read FOnChange write FOnChange; property OnSortExchange: TSortExchgEvent read FOnSortExchange write FOnSortExchange; property OnCalcDistance: TOnCalcDistanceEvent read FOnCalcDist write FOnCalcDist; end; TMat3D = class (TComponent) private FNumX : longint; { number of columns } FNumY : longint; { number of rows } FNumZ : longint; { number of layers } FDataID : string; { tag to identify the data } Mat : array of array of array of double; FOnChange : TNotifyEvent; {$IFDEF PAIDVERS} FirstCell : boolean;{flag to resize matrix during input from XML } function ProcessXmlTag (xmlTag: TMatXmlTag; attr, cont: string): integer; {$ENDIF} function GetVal (Nx,Ny,Nz: longint): double; procedure SetVal (Nx,Ny,Nz: longint; Value: double); procedure SetNCols (value: longint); procedure SetNRows (value: longint); procedure SetNLayers (value: longint); public constructor Create (AOwner: TComponent); override; destructor Destroy; override; procedure Changed; procedure Clone (MatSource: TMat3D); procedure CopyLayerToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, Layer: integer); procedure CopyMatrixToLayer (SrcMat: TMatrix; SrcLowCol, SrcHighCol, SrcLowRow, SrcHighRow, Layer, LayLowCol, LayLowRow: integer); {$IFNDEF DOTNET} function CRCofData: string; {$ENDIF} property Elem[ix,iy,iz: longint]: double read GetVal write SetVal; default; procedure Fill (value: double); procedure FillDiag (value: double); procedure FillRandomUniform (RangeLow, RangeHigh: double); procedure FillRandomGauss (Mean, StdDev: double); procedure Find (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer: integer; Value: double; var ColIx, RowIx, LayerIx: integer); function LoadFromXMLFile (FName: string; DataID: string): boolean; procedure MakeValidColRange (var LowCol, HighCol: integer); procedure MakeValidRowRange (var LowRow, HighRow: integer); procedure MakeValidLayerRange (var LowLayer, HighLayer: integer); procedure MinMax (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer: integer; var Minimum, Maximum: double); function Percentile (prob: double; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer: integer): double; overload; function Percentile (prob: double; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer: integer; SampleSize: integer): double; overload; function ReadFromOpenXMLFile (var InFile: TextFile; DataID: string): boolean; function ReadFromXMLStream (InStream: TStream; DataID: string): boolean; function Resize (Nc, Nr, Nl: longint): boolean; function ResizeAndClear (Nc, Nr, Nl: longint): boolean; procedure SaveAsXMLFile (FName: string; DataID: string); procedure WriteToOpenXMLFile (var OutFile : TextFile; CreateHeader: boolean; DataID: string); procedure WriteToXMLStream (OutStream: TStream; CreateHeader: boolean; DataID: string); published property DataID: string read FDataID write FDataID; property NrOfColumns: longint read FNumX write SetNCols; property NrOfRows: longint read FNumY write SetNRows; property NrOfLayers: longint read FNumZ write SetNLayers; property OnChange: TNotifyEvent read FOnChange write FOnChange; end; {$IFNDEF DOTNET} TMat4D = class (TComponent) private FNumX : longint; { number of columns } FNumY : longint; { number of rows } FNumZ : longint; { number of layers } FNumT : longint; { number of time slots } FDataID : string; { tag to identify the data } Mat : TDouble4DArray; FOnChange : TNotifyEvent; FOnPercentDone : TOnPercentDoneEvent; FOnReadElement : TOnReadMat4DElementEvent; {$IFDEF PAIDVERS} FirstCell : boolean;{flag to resize matrix during input from XML } function ProcessXmlTag (xmlTag: TMatXmlTag; attr, cont: string): integer; {$ENDIF} function GetVal (Nx,Ny,Nz,Nt: longint): double; procedure SetVal (Nx,Ny,Nz,Nt: longint; Value: double); procedure SetNCols (value: longint); procedure SetNRows (value: longint); procedure SetNLayers (value: longint); procedure SetNTSlots (value: longint); procedure PercDone (Sender: TObject; Percent: longint); procedure ReadElement (Sender: TObject; ix, iy, il, it: integer; Value: double); protected procedure AssignTo (Dest: TPersistent); override; public procedure AppendToBinaryFile (FName: string; TSlotStart, TSlotEnd: integer); procedure Assign(Source: TPersistent); override; constructor Create (AOwner: TComponent); override; destructor Destroy; override; procedure Changed; procedure Clone (MatSource: TMat4D); function ConvertLinTo3DAddr (LinAddr: integer; var ix, iy, il: integer): boolean; procedure CopyArrayToLayer (SrcArray: TDouble2DArray; Col, Row, Layer, TimeSlot: integer); procedure Copy1DArrayToPixel (Src: TDoubleArray; Col, Row, FirstLayer, TimeSlot: integer); procedure CopyTimeSlotToMat3D (DestMat: TMat3D; LowCol, HighCol, LowRow, HighRow, LowLay, HighLay, TimeSlot: integer); procedure CopyTimeSlotToArray (var DestMat: TDouble3DArray; LowCol, HighCol, LowRow, HighRow, LowLay, HighLay, TimeSlot: integer); procedure CopyMat3DToTimeSlot (SrcMat: TMat3D; SrcLowCol, SrcHighCol, SrcLowRow, SrcHighRow, SrcLowLay, SrcHighLay, TimeSlot, DestCol, DestRow, DestLayer: integer); procedure CopyArrayToTimeSlot (SrcMat: TDouble3DArray; SrcLowCol, SrcHighCol, SrcLowRow, SrcHighRow, SrcLowLay, SrcHighLay, TimeSlot, DestCol, DestRow, DestLayer: integer); procedure CopyFrom (MatSource: TMat4D; SrcLowCol, SrcHighCol, SrcLowRow, SrcHighRow, SrcLowLayer, SrcHighLayer, SrcLowTSlot, SrcHighTSlot, DestCol, DestRow, DestLayer, DestTSlot: integer); procedure CopyLayerToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, Layer, TimeSlot: integer); procedure CopyLayerToArray (var DestArray: TDouble2DArray; LowCol, HighCol, LowRow, HighRow, Layer, TimeSlot: integer); procedure CopyMatrixToLayer (SrcMat: TMatrix; SrcLowCol, SrcHighCol, SrcLowRow, SrcHighRow, Layer, TimeSlot, LayLowCol, LayLowRow: integer); function CountValues (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeslot, HighTimeslot: integer; RangeLow, RangeHigh: double): integer; function CRCofData: string; overload; function CRCofData (Sample: integer): string; overload; procedure Cut (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeslot, HighTimeslot: integer); procedure Resample (XDiv, XOffset, YDiv, YOffset, ZDiv, ZOffset, TDiv, TOffset: integer; Average: boolean); property Elem[ix,iy,iz,it: longint]: double read GetVal write SetVal; default; procedure Fill (value: double); procedure FillDiag (value: double); procedure FillLayer (Layer: integer; value: double); procedure FillRandomUniform (RangeLow, RangeHigh: double); procedure FillRandomGauss (Mean, StdDev: double); procedure Find (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer; Value: double; var ColIx, RowIx, LayerIx, TimeSlotIx: integer); function Lin3DAddr (ix, iy, il: integer): integer; procedure LoadBinary (FName: string; TSlotStart, TSlotEnd: integer); function LoadFromXMLFile (FName: string; DataID: string): boolean; procedure MakeValidColRange (var LowCol, HighCol: integer); procedure MakeValidRowRange (var LowRow, HighRow: integer); procedure MakeValidLayerRange (var LowLayer, HighLayer: integer); procedure MakeValidTSlotRange (var LowTSlot, HighTSlot: integer); procedure MaximumOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer); overload; procedure MaximumOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot, NThreads: integer); overload; procedure MeanOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer); overload; procedure MeanOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot, NThreads: integer); overload; function MemoryConsumed: double; procedure MinimumOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer); overload; procedure MinimumOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot, NThreads: integer); overload; procedure MinMax (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer; var Minimum, Maximum: double); procedure MeanVar (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer; var Mean, Variance: double); procedure MirrorColumns; procedure MirrorRows; procedure MirrorLayers; procedure MirrorTimeSlots; function Percentile (prob: double; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer): double; overload; function Percentile (prob: double; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer; SampleSize: integer): double; overload; procedure ReadBinary (FName: string; TSlotStart, TSlotEnd: integer); function ReadBinaryHeader (FName: string; var NrColumns, NrRows, NrLayers, NrTimeSlots: integer; var DataID: string): boolean; function ReadFromOpenXMLFile (var InFile: TextFile; DataID: string): boolean; procedure ReadLayer (FName: string; Layer, TSlot: integer); overload; procedure ReadLayer (FName: string; Layer, TSlot: integer; var Data: TDouble2DArray); overload; function Resize (Nc, Nr, Nl, Nt: longint): boolean; function ResizeAndClear (Nc, Nr, Nl, Nt: longint): boolean; procedure SaveBinary (FName: string; TSlotStart, TSlotEnd: integer); procedure SaveAsXMLFile (FName: string; DataID: string); procedure StdDevOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer); overload; procedure StdDevOfLayersToMatrix (DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot, NThreads: integer); overload; function Sum (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer): double; function SquaredSum (LowCol, HighCol, LowRow, HighRow, LowLayer, HighLayer, LowTimeSlot, HighTimeSlot: integer): double; function Transpose: boolean; procedure WriteToOpenXMLFile (var OutFile : TextFile; CreateHeader: boolean; DataID: string); published property DataID: string read FDataID write FDataID; property NrOfColumns: longint read FNumX write SetNCols; property NrOfRows: longint read FNumY write SetNRows; property NrOfLayers: longint read FNumZ write SetNLayers; property NrOfTimeSlots: longint read FNumT write SetNTSlots; property OnChange: TNotifyEvent read FOnChange write FOnChange; property OnPercentDone: TOnPercentDoneEvent read FOnPercentDone write FOnPercentDone; property OnReadElement: TOnReadMat4DElementEvent read FOnReadElement write FOnReadElement; end; {$ENDIF} procedure CopyArr3DLayerToArr2D (SourceArray: TDouble3DArray; var DestArray: TDouble2DArray; LowCol, HighCol, LowRow, HighRow, Layer: integer); procedure CopyArr3DLayerToMatrix (SourceArray: TDouble3DArray; DestMat: TMatrix; LowCol, HighCol, LowRow, HighRow, Layer: integer); procedure CopyMatrixToArray (SourceMat: TMatrix; var DestArray: TDouble2DArray; LowCol, HighCol, LowRow, HighRow: integer);
|