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....



Interface of SDL_Vector

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;






Last Update: 2023-Feb-06