const
{$IFDEF PAIDVERS}
SDLVersionInfo = 'vector_r1210_full';
IsLightEd = false;
{$ELSE}
SDLVersionInfo = 'vector_r1210_lighted';
IsLightEd = true;
{$ENDIF}
Release = 1210;
type
ESDLVectorError = class(ESDLError); { exception type to indicate errors }
TIntegMethod = (imSimple, imTrapezoidal, imSimpson);
TIntVector = class;
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TVector = class (TComponent)
private
FNElem : longint; { number of elements }
FIsEmpty : boolean;
FVec : array of double; { pointer to vector elements }
FOnChange : TNotifyEvent;
FOnResize : TNotifyEvent;
FOnSortExchange: TSortExchgEvent;
function GetVal (Elem: longint): double;
procedure SetVal (Elem: longint; Value: double);
function CalcVecLeng: double;
procedure SetVecLeng (Value: double);
procedure SetVecSize (sz: longint);
procedure SkewKurtIntern (LowElem, HighElem: 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;
procedure Add (OtherVec: TVector);
procedure AbsVal;
procedure Clear;
procedure Changed;
procedure Clone (VecSource: TVector);
function CopyFrom (Src: TVector; SrcElemLo, SrcElemHi,
DestElem: integer): integer; overload;
function CopyFrom (Src: TDoubleArray; SrcElemLo, SrcElemHi,
DestElem: integer): integer; overload;
procedure CopyFrom2DArrayColumn (SrcArray: TDouble2DArray;
Col, FirstRow, LastRow, DestElem: integer);
procedure CopyFrom2DArrayRow (SrcArray: TDouble2DArray;
Row, FirstCol, LastCol, DestElem: integer);
procedure CopyToArray (var DestArray: TDoubleArray;
LowElem, HighElem, DestElem: integer); overload;
procedure CopyToArray (var DestArray: TDouble2DArray;
LowElem, HighElem, DestCol, DestRow: integer;
AsColumn: boolean); overload;
function Correlate (OtherVec: TVector;
ElemShift: integer): double;
{$IFNDEF DOTNET}
function CRCofData: string;
{$ENDIF}
function DotProduct (OtherVec: TVector): double;
function EuclideanDistance (OtherVec: TVector): double;
function ExportAsASC (FName: string; Precision: integer;
Comment: string): Integer;
procedure Fill (value: double);
procedure FillRandomUniform (RangeLow, RangeHigh: double);
procedure FillRandomGauss (Mean, StdDev: double);
procedure FillSerial (Offset, Diff: double);
function FindInSortedVector (Ascending: boolean;
Value: double): integer;
function Find (LowElem, HighElem: integer;
value: double): integer;
function FindExact (LowElem, HighElem: integer;
value: double): integer;
function GeometricMean (LowElem, HighElem: integer): double;
function HarmonicMean (LowElem, HighElem: integer): double;
function Histogram (FirstElem, LastElem: longint;
FirstBin, LastBin, BinWidth: double;
var Histo: TIntArray; var Underflow,
Overflow, MaxCnt: longint): boolean; overload;
function Histogram (FirstElem, LastElem: longint;
FirstBin, LastBin, BinWidth: double;
Histo: TIntVector; var Underflow,
Overflow, MaxCnt: longint): boolean; overload;
function ImportASC (FName: string;
var Comment: string): integer;
function Integrate (BoundLow,BoundHigh: double;
Method: TIntegMethod): double;
function IsDichotomous (var v1, v2: double): boolean;
property Leng: double read CalcVecLeng write SetVecLeng;
function LoadFromFile (FileName: string;
AdjustVectorSize: boolean): boolean; overload;
function LoadFromFile (FileName: string; AdjustVectorSize,
AutoDetect: boolean): boolean; overload;
function LoadFromStream (InStream: TMemoryStream;
AdjustVectorSize: boolean): boolean; overload;
function LoadFromStream (InStream: TFileStream;
AdjustVectorSize: boolean): boolean; overload;
function MakeValidElemRange
(var LowElem, HighElem: integer): integer;
function MeanCenter: double;
procedure MeanVar (LowElem, HighElem: integer;
var Mean, Variance: double);
procedure MinMax (LowElem, HighElem: integer;
var Minimum, Maximum: double); overload;
procedure MinMax (LowElem, HighElem: integer;
var Minimum, Maximum: double;
var MinIx, MaxIx: integer); overload;
procedure Mirror;
function Mode (LowElem, HighElem: integer): double;
function PearsonCorrCoeff (OtherVec: TVector): double;
function Percentile (prob: double; LowElem,
HighElem: integer): double;
procedure QNormalize (RefQuant: double;
var Median, QuantDiff: double);
function Quartiles (LowElem, HighElem: integer;
var Q1, Q2, Q3: double): boolean;
function Resize (NE: longint): boolean;
procedure Resized;
procedure SaveToStream (var OutStream: TMemoryStream;
LowElem, HighElem: integer); overload;
procedure SaveToStream (var OutStream: TFileStream;
LowElem, HighElem: integer); overload;
procedure Standardize (var mean, stddev: double);
function StoreOnFile (FirstElem, LastElem, Precision: integer;
FileName:string): boolean;
procedure SkewKurt (LowElem, HighElem: integer;
var Skewness, Kurtosis: double);
procedure SkewKurtSample (LowElem, HighElem: integer;
var Skewness, Kurtosis: double);
procedure ShuffleElems;
procedure SMult (scalar: double);
procedure SortElems (Ascending: boolean; RangeFirst,
RangeLast: integer);
procedure Subtract (OtherVec: TVector);
function Sum (LowElem, HighElem: integer): double;
property IsEmpty: boolean read FIsEmpty write FIsEmpty;
property Elem[ix: longint]: double
read GetVal write SetVal; default;
published
property NrOfElem: longint read FNElem write SetVecSize;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnResize: TNotifyEvent read FOnResize write FOnResize;
property OnSortExchange: TSortExchgEvent
read FOnSortExchange write FOnSortExchange;
end;
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TIntVector = class (TComponent)
private
FNElem : longint; { number of elements }
FVec : array of integer;{pointer to vector elements}
FIsEmpty : boolean;
FOnChange : TNotifyEvent;
FOnResize : TNotifyEvent;
FOnSortExchange: TSortExchgEvent;
function GetVal (Elem: longint): integer;
procedure SetVal (Elem: longint; Value: integer);
function CalcVecLeng: double;
procedure SetIntVecSize (sz: longint);
procedure SkewKurtIntern (LowElem, HighElem: 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 AbsVal;
procedure Add (OtherVec: TIntVector);
procedure Assign(Source: TPersistent); override;
procedure Changed;
procedure Clear;
procedure Clone (VecSource: TIntVector);
function CopyFrom (Src: TIntVector; SrcElemLo, SrcElemHi,
DestElem: integer): integer; overload;
function CopyFrom (Src: TIntArray; SrcElemLo, SrcElemHi,
DestElem: integer): integer; overload;
procedure CopyFrom2DArrayColumn (SrcArray: TInt2DArray;
Col, FirstRow, LastRow, DestElem: integer);
procedure CopyFrom2DArrayRow (SrcArray: TInt2DArray;
Row, FirstCol, LastCol, DestElem: integer);
procedure CopyToArray (var DestArray: TIntArray;
LowElem, HighElem, DestElem: integer); overload;
procedure CopyToArray (var DestArray: TInt2DArray;
LowElem, HighElem, DestCol, DestRow: integer;
AsColumn: boolean); overload;
function Correlate (OtherVec: TIntVector;
ElemShift: integer): integer;
{$IFNDEF DOTNET}
function CRCofData: string;
{$ENDIF}
function DotProduct (OtherVec: TIntVector): integer;
function EuclideanDistance (OtherVec: TIntVector): double;
function ExportAsASC (FName: string; Comment: string): Integer;
procedure Fill (value: integer);
procedure FillSerial (Offset, Diff: integer);
function Find (LowElem, HighElem, value: integer): integer;
function FindExact (LowElem, HighElem,
value: integer): integer;
function FindInSortedVector (Ascending: boolean;
Value: integer): integer;
function GeometricMean (LowElem, HighElem: integer): double;
function HarmonicMean (LowElem, HighElem: integer): double;
function Histogram (FirstElem, LastElem: longint;
FirstBin, LastBin, BinWidth: integer;
var Histo: TIntArray; var Underflow, Overflow,
MaxCnt: longint): boolean; overload;
function Histogram (FirstElem, LastElem: longint;
FirstBin, LastBin, BinWidth: integer;
Histo: TIntVector; var Underflow, Overflow,
MaxCnt: longint): boolean; overload;
function IsDichotomous (var v1, v2: integer): boolean;
function ImportASC (FName: string;
var Comment: string): integer;
property Leng: double read CalcVecLeng;
{ %% read only - in contrast to TVector !! }
function LoadFromFile (FileName: string;
AdjustVectorSize: boolean): boolean;
function LoadFromStream (InStream: TMemoryStream;
AdjustVectorSize: boolean): boolean; overload;
function LoadFromStream (InStream: TFileStream;
AdjustVectorSize: boolean): boolean; overload;
function MakeValidElemRange
(var LowElem, HighElem: integer): integer;
procedure MeanVar (LowElem, HighElem: integer;
var Mean, Variance: double);
procedure MinMax (LowElem, HighElem: integer;
var Minimum, Maximum: integer); overload;
procedure MinMax (LowElem, HighElem: integer;
var Minimum, Maximum: integer;
var MinIx, MaxIx: integer); overload;
procedure Mirror;
function Mode (LowElem, HighElem: integer): integer;
function PearsonCorrCoeff (OtherVec: TIntVector): double;
function Percentile (prob: double; LowElem,
HighElem: integer): double;
function Quartiles (LowElem, HighElem: integer;
var Q1, Q2, Q3: double): boolean;
function Resize (NE: longint): boolean;
procedure Resized;
procedure SaveToStream (var OutStream: TMemoryStream;
LowElem, HighElem: integer); overload;
procedure SaveToStream (var OutStream: TFileStream;
LowElem, HighElem: integer); overload;
procedure SkewKurt (LowElem, HighElem: integer;
var Skewness, Kurtosis: double);
procedure SkewKurtSample (LowElem, HighElem: integer;
var Skewness, Kurtosis: double);
procedure SortElems (Ascending: boolean;
RangeFirst, RangeLast: integer);
procedure ShuffleElems;
procedure SMult (scalar: integer);
function StoreOnFile (FirstElem, LastElem: integer;
FileName:string): boolean;
procedure Subtract (OtherVec: TIntVector);
function Sum (LowElem, HighElem: integer): longint;
property IsEmpty: boolean read FIsEmpty write FIsEmpty;
property Elem[ix: longint]: integer
read GetVal write SetVal; default;
published
property NrOfElem: longint read FNElem write SetIntVecSize;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnResize: TNotifyEvent read FOnResize write FOnResize;
property OnSortExchange: TSortExchgEvent
read FOnSortExchange write FOnSortExchange;
end;
|