Matrix.Copy Method

Overload List

#SignatureDescription
1function Copy(const Mtx: TMtx; MtxRow: Integer; MtxCol: Integer; Row: Integer; Col: Integer; NrRows: Integer; NrCols: Integer; Transpose: Boolean): TMtx;Copy the Mtx elements [MtxRow,MtxCol]..[MtxRow+NrRows-1,MtxCol+NrCols-1] to the calling matrix elements [Row,Col],,[Row+NrRows-1,Col+NrCols-1].
2function Copy(const Src: TMtxInt; const dstFloatPrecision: TMtxFloatPrecision): TMtxVec;Copy and convert values from TVecInt.
3function Copy(const Vec: TMtxVec): TMtxVec;Copy object values.
└ indexed: function Copy(const Vec: TMtxVec; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
4function Copy(const Src: TMtxVec; const dstFloatPrecision: TMtxFloatPrecision): TMtxVec;Copy object values.
5function Copy(const Src: TVecInt; const dstFloatPrecision: TMtxFloatPrecision): TMtxVec;Copy and convert values from TVecInt.
6function Copy(const Src: TMtxInt; SrcIndex: Integer; Index: Integer; Len: Integer): TMtxVec;Copy and convert values from TMtxInt at indexes [SrcIndex]...[SrcIndex+Len-1].
7function Copy(const Src: TVecInt; SrcIndex: Integer; Index: Integer; Len: Integer): TMtxVec;Copy and convert values from TVecInt at indexes [SrcIndex]...[SrcIndex+Len-1].

Overload 1: function Copy(const Mtx: TMtx; MtxRow: Integer; MtxCol: Integer; Row: Integer; Col: Integer; NrRows: Integer; NrCols: Integer; Transpose: Boolean): TMtx;

Copy the Mtx elements [MtxRow,MtxCol]..[MtxRow+NrRows-1,MtxCol+NrCols-1] to the calling matrix elements [Row,Col],,[Row+NrRows-1,Col+NrCols-1].

#NameTypeDescription
1MtxTMtx
2MtxRowInteger
3MtxColInteger
4RowInteger
5ColInteger
6NrRowsInteger
7NrColsInteger
8TransposeBoolean

Result: stored in self (calling object), returns self for chaining

Remarks:

An exception is raised if Matrix.ConditionCheck is true and bounds are overrun. If Transpose is true, the matrix is transposed as well. An exception is raised if Matrix.ConditionCheck is true and Complex properties of the calling matrix and Mtx do not match.

Overload 2: function Copy(const Src: TMtxInt; const dstFloatPrecision: TMtxFloatPrecision): TMtxVec;

Copy and convert values from TVecInt.

#NameTypeDescription
1SrcTMtxInt
2dstFloatPrecisionTMtxFloatPrecision

Result: stored in self (calling object), returns self for chaining

Remarks:

Applies appropriate conversion and copy data from TVecInt. The size of the matrix must match the length of the vector or an exception will be raised.

Overload 3: function Copy(const Vec: TMtxVec): TMtxVec;

Copy object values.

#NameTypeDescription
1VecTMtxVec

Result: stored in self (calling object), returns self for chaining

Remarks:

Copy each of Vec elements to the calling object. Size and Matrix.Complex properties of the calling object are set implicitly to match Vec object.

Examples
var a,b,c: Matrix;
begin
    a.SetIt(1,2,True,[1,2,3,4]);  // a = [1,2,3,4]
    b.Copy(a);                // b = [1,2,3,4]
    c.Copy(a,b);  //concatenate a and b and store in c = [1,2,3,4,1,2,3,4]
end;
var
    a, x: Matrix;
begin
    x := [[1.0, 2.0], [3.0, 4.0]];
    a.Copy(x);
    if not a.IsEqual(x, 1e-10, TCompare.cmpAbsolute) then
        raise Exception.Create('Matrix.Copy: mismatch');
end;
See Also: Matrix.Assign

Indexed: function Copy(const Vec: TMtxVec; VecIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Copy Vec elements [VecIndex]..[VecIndex+Len-1] in the calling object elements [Index]..[Index+Len-1].

#NameTypeDescription
1VecTMtxVec
2VecIndexInteger
3IndexIntegerstart index
4LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Size and Matrix.Complex properties must be set explicitly. An exception is raised if Matrix.ConditionCheck is True and array borders are overrun or underrun.

Overload 4: function Copy(const Src: TMtxVec; const dstFloatPrecision: TMtxFloatPrecision): TMtxVec;

Copy object values.

#NameTypeDescription
1SrcTMtxVec
2dstFloatPrecisionTMtxFloatPrecision

Result: stored in self (calling object), returns self for chaining

Remarks:

Copy each of Src elements to the calling object. Size and Matrix.Complex properties of the calling object are set implicitly to match Src object.

Examples
begin
    TVec a,b,c;
    CreateIt(a, b, c);
    try
        a.SetIt(True,[1,2,3,4]);  // a = [1,2,3,4] i.e 1+2i ; 3+4i
        b.Copy(a, mvSingle);                // convert to single precision
    finally
        FreeIt(a, b, c);
    end;
end;
See Also: Matrix.Assign

Overload 5: function Copy(const Src: TVecInt; const dstFloatPrecision: TMtxFloatPrecision): TMtxVec;

Copy and convert values from TVecInt.

#NameTypeDescription
1SrcTVecInt
2dstFloatPrecisionTMtxFloatPrecision

Result: stored in self (calling object), returns self for chaining

Remarks:

Applies appropriate conversion and copy data from TVecInt. The size of the matrix must match the length of the vector or an exception will be raised.

Overload 6: function Copy(const Src: TMtxInt; SrcIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Copy and convert values from TMtxInt at indexes [SrcIndex]...[SrcIndex+Len-1].

#NameTypeDescription
1SrcTMtxInt
2SrcIndexIntegersource start index
3IndexIntegerstart index
4LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Applies appropriate conversion and copy data from TMtxInt. The results are stored in calling object elements [Index]...[Index+Len-1]. Size and Matrix.Complex properties of the calling object must be set explicitly. An exception is raised if array borders are overrun.

Overload 7: function Copy(const Src: TVecInt; SrcIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Copy and convert values from TVecInt at indexes [SrcIndex]...[SrcIndex+Len-1].

#NameTypeDescription
1SrcTVecInt
2SrcIndexIntegersource start index
3IndexIntegerstart index
4LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Applies appropriate conversion and copy data from TVecInt. The results are stored in calling object elements [Index]...[Index+Len-1]. Size and Matrix.Complex properties of the calling object must be set explicitly. An exception is raised if array borders are overrun.