const
{$IFDEF PAIDVERS}
SDLVersionInfo = 'vector_r900_full';
IsLightEd = false;
{$ELSE}
SDLVersionInfo = 'vector_r900_lighted';
IsLightEd = true;
{$ENDIF}
Release = 900;
type
ESDLVectorError = class(ESDLError); { exception type to indicate errors }
TIntVector = class;
TVector = class (TComponent)
private
FNElem : longint; { number of elements }
FIsEmpty : boolean;
FVec : array of double; { pointer to vector elements }
FOnChange : 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 SortExchange (ExchgWhat: byte; index1, index2,
first, last: longint);
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
procedure Add (OtherVec: TVector);
procedure Clear;
procedure Changed;
procedure Clone (VecSource: TVector);
procedure CopyFrom (VecSource: TVector;
SourceElemLo, SourceElemHi,
DestElem: integer);
function Correlate (OtherVec: TVector; ElemShift: integer): double;
function DotProduct (OtherVec: TVector): double;
procedure Fill (value: double);
function GeometricMean (LowElem, HighElem: integer): double;
function HarmonicMean (LowElem, HighElem: integer): double;
function Histogram (FirstElem, LastElem: longint;
FirstBin, LastBin, BinWidth: double;
Histo: TIntVector; var Underflow,
Overflow, MaxCnt: longint): boolean;
property Leng: double read CalcVecLeng write SetVecLeng;
function LoadFromFile (FileName: string;
AdjustVectorSize: boolean): boolean;
procedure MeanVar (LowElem, HighElem: integer;
var Mean, Variance: double);
procedure MinMax (LowElem, HighElem: integer;
var Minimum, Maximum: 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;
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 OnSortExchange: TSortExchgEvent
read FOnSortExchange write FOnSortExchange;
end;
TIntVector = class (TComponent)
private
FNElem : longint; { number of elements }
FVec : array of integer;{pointer to vector elements}
FIsEmpty : boolean;
FOnChange : 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 SortExchange (ExchgWhat: byte; index1, index2,
first, last: longint);
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
procedure Add (OtherVec: TIntVector);
procedure Changed;
procedure Clear;
procedure Clone (VecSource: TIntVector);
procedure CopyFrom (VecSource: TIntVector;
SourceElemLo, SourceElemHi,
DestElem: integer);
function Correlate (OtherVec: TIntVector;
ElemShift: integer): integer;
function DotProduct (OtherVec: TIntVector): integer;
procedure Fill (value: integer);
function GeometricMean (LowElem, HighElem: integer): double;
function HarmonicMean (LowElem, HighElem: integer): double;
property Leng: double read CalcVecLeng;
{ %% read only - in contrast to TVector !! }
function LoadFromFile (FileName: string;
AdjustVectorSize: boolean): boolean;
procedure MeanVar (LowElem, HighElem: integer;
var Mean, Variance: double);
procedure MinMax (LowElem, HighElem: integer;
var Minimum, Maximum: integer);
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 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 OnSortExchange: TSortExchgEvent
read FOnSortExchange write FOnSortExchange;
end;
|