Matrix creation Algorithms - Matrices
Written by Jan Schulz
Sunday, 13 July 2008 20:10 Creating a matrix of defined dimensions

After declaration of a variable of the type t2dVariantArrayDouble the dynamic arrays have zero length and no information can be stored in the record structure. Thus, accessing arrays results in a runtime error. Here a function is introduced that initialises a rectangular matrix of given dimensions for a declared variable of the type t2dVariantArrayDouble. Elements of the matrix are initialised with a predefined value.

Algorithm

First the name of the matrix is set. Thereafter the desired dimensions of the row and column tile arrays of are set according to passed parameters. To create the matrix the dimension of the row array is initialised first. Perpendicular to the matrix rows the column arrays are set for the elements of the matrix. Each element is initialised with the demanded value.

Source

`Function mtx_Create (Var OutputMatrix : T2dVariantArrayDouble; SizeY, SizeX : Integer; InitialValue : Double; MatrixName :String) : Boolean;// The function mtxCreateNew creates a new matrix of the type t2dVariantArray. The// respective size for columns and rows are given in SizeX and SizeY.// The matrix is initialised with the value found in InitialValue.// The name of the matrix can be given in MatrixName.// (c) Jan Schulz, November 2004, www.code10.infoVar RunnerX   : Integer;    RunnerY   : Integer;Begin  mtx_Create := False;  // set the required length of the arrays  SetLength (OutputMatrix.ColTitle, SizeX);  SetLength (OutputMatrix.RowTitle, SizeY);  // set name of matrix  OutputMatrix.MatrixName := MatrixName;  // initialise titles with empty fields  For RunnerX := High (OutputMatrix.ColTitle) downto 0 do      OutputMatrix.ColTitle [RunnerX] := '';  For RunnerY := High (OutputMatrix.RowTitle) downto 0 do      OutputMatrix.RowTitle [RunnerY] := '';  //create and initialise elements of data matrix  SetLength (OutputMatrix.Cells, SizeY);  For RunnerY := High (OutputMatrix.Cells) downto 0 do  Begin    // set the required elements for every data row    SetLength (OutputMatrix.Cells [RunnerY], SizeX);    For RunnerX := High (OutputMatrix.Cells [RunnerY]) to 0 do    Begin      // initialise elements with given value      OutputMatrix.Cells [RunnerY, RunnerX] := InitialValue;    end;  end;  mtx_Create := True;end; `

Example

The below example creates and initialises a defined matrix for the variable aMatrix of the type t2dVariantArrayDouble with six rows and three columns. All elements aMatrix.Cells of the matrix are initialised with the value zero. The dimension of the array aMatrix.RowTitle is set to six and that of aMatrix.ColTitle to three. Fields of the respective arrays contain empty strings. The name aMatrix.MatrixName is set to ‘Example matrix’:

`Procedure CreateNewMatrix;Var aMatrix : t2dVariantArrayDouble;Begin  // create an initialised matrix  mtx_CreateNew (aMatrix, 6, 3, 0, 'Example matrix');`
`  // use the matrix  {...}end;`

Last Updated on Friday, 18 March 2011 18:03