AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

(Freie) Vektorklasse für Delphi?

Ein Thema von Herby99 · begonnen am 21. Jul 2008 · letzter Beitrag vom 21. Jul 2008
Antwort Antwort
Herby99

Registriert seit: 7. Aug 2007
3 Beiträge
 
Delphi 2006 Enterprise
 
#1

(Freie) Vektorklasse für Delphi?

  Alt 21. Jul 2008, 10:02
Hallo zusammen,

ich bin auf der Suche nach einer guten Vektorklasse für Delphi. Bislang habe ich nur eine kommerzielle Version (http://www.lohninger.com/mathpack.html) gefunden, die aber schonmal in die Richtung geht, wie ich das gerne hätte.

Ich verarbeite in Delphi Messreihen im Umfang 10^2 bis 10^6 (das kann die Lightversion von o.g. Komponente leider schon nicht in der Lightversion), benötige Berechnungen wie Mean, Std, Sum, Min/Max, etc., sowie Berechnungen mit anderen Vektoren und Skalaren (elementweise/vektorielle Multiplikation, Addition, Subtraktion, etc).

Dazu wären Operationen wie gezieltes anfügen/füllen/löschen an bestimmten Position, Direktzugriff auf Elemente im Vektor usw., ebenfalls wünschenswert.

Ich stelle mir das ungefähr so vor:

Delphi-Quellcode:
TVector = class
    private
      
       FLength : integer;
       function GetElement(Index : integer);
       procedure SetElement(Index : integer; AElement : double);
       procedure SetLength(NewLength : integer);
       [...]
    public
      // Speicherbelegung & Aufräumen hier erledigen:
      constructor Create(Sender : TObject; InitialLength : integer = 1);
      destructor Destroy();

      // Basis Properties
      property Element[Index : integer] : double read GetElement write SetElement;
      property Length : integer read FLength write SetLength;

      // Berechnungen:
      function Min(FromIndex, ToIndex : integer) : double;
      function Sum(FromIndex, ToIndex : integer) : double;
      function Mean(FromIndex, ToIndex : integer) : double;

      // Einfügen/Löschen/etc
      procedure FillWithValue(Value : double = 0);
      procedure FillWithRandom(Mean : double = 0; Variance : double = 1);
      procedure AppendAtBegin(Value : double);
      procedure AppendAtEnd(Value : double);
      procedure InsertAtIndex(AIndex : integer; Value : double);
      procedure InsertAtPosition(AVec : TVector; MergePosition : integer);
      procedure DeleteAtIndex(AIndex : integer; Value : double);
      procedure DeleteFromTo(AIndexFrom, AIndexTo : integer);
      // Nice-To-Have:
      procedure LoadFromFile(AFileName : string);
      procedure SaveToFile(AFileName : string);
      [...]
end;
Kann natürlich von den Funktionen beliebig verlängert werden...

Wäre natürlich gut, wenn es so etwas bereits (frei) gäbe (ich habe weder bei Google noch bei der Boardsuche irgendwas vernünftiges gefunden - steinigt mich, falls ich da was einfaches übersehen hab ). Ich würde auch selbst programmieren, allerdings wäre dann die Frage, wie man die interne Darstellung der Zahlen (Liste, Dyn. Array, Stream?) am performantesten realisiert. Derzeit benutze ich Pointer auf dynamische Arrays:

Delphi-Quellcode:
  
type
  TDoubleVec = array of Double;
  PDoubleVec = ^TDoubleVec;

  [...]
var
 Vec : PDoubleVec;
begin
  New(Vec);

  // [...]

  Dispose(Vec);
end
Habe z.B. auch mal irgendwo gehört, dass for-Schleifen über ein (großes) Array wohl nicht so besonders gut sein sollen und man stattdessen besser einen Pointer incrementieren sollte, den man zu Beginn auf das 0. Element setzt. Sowas wäre auch gut zu wissen, was man da noch "rausholen" kann.

Danke schonmal für Eure Tips!

Gruß,
Jan
  Mit Zitat antworten Zitat
HeinzJ

Registriert seit: 17. Aug 2007
Ort: Bremen
84 Beiträge
 
Delphi 2007 Architect
 
#2

Re: (Freie) Vektorklasse für Delphi?

  Alt 21. Jul 2008, 10:31
Vielleicht ist bei den SysTools was dabei

http://www.turbocontrol.com/TPSupport.htm
http://sourceforge.net/projects/tpsystools/
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: (Freie) Vektorklasse für Delphi?

  Alt 21. Jul 2008, 12:01
Hallo Jan,

ein freies Paket kann ich dir leider nicht nennen, aber du könntest dir MtxVec v3 einmal ansehen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz