Example Matrix copy 006




This example shows how a Matrix may be modified destructively or non-destructively using the the copy and setq function.



The original Matrix.

(define x #(mat| "The " "Rain " "in " "Spain") ) Returns: #<Matrix 123456>

The copied Matrix using the copy function.

(setq z (copy x)) Returns: #<Matrix 234567>

The copied Matrix using the setq function.

(setq twin x) Returns: #<Matrix 345678>

After the first setq function, the values of Matrix z are:

z[0] Returns: The
z[1] Returns: Rain
z[2] Returns: in
z[3] Returns: Spain

After the first setq function, the values of Matrix x are:

z[0] Returns: The
x[1] Returns: Rain
x[2] Returns: in
x[3] Returns: Spain

The container named z is a copy of x (both are Matrices) and z has a separate memory space. However, the containers named x and twin point to the same memory spaces on the heap. Therefore

(setq twin[1] "Hail" ) Returns: #<Matrix 123456>

The setq command results in the contents of both twin and x being both the same.

twin[1] Returns: Hail
x[1] Returns: Hail

Since z points to a different memory space, it still retained the original value which was copied from x before the values of x were modified.

z[1] Returns: Rain

Notes and Hints

Using the setq function results in objects having the same object id. But the object that is being assigned the copied object has a different object id than original object. In this example twin and x have the same object id while z has a different object id.


Related Examples

Here are examples of the copy function at work.

BitVector copy 011 Brick copy 012 CpxVector copy 013 Dictionary copy 002
Directory copy 003 FltVector copy 006 IntVector copy 007 Lambda copy 008
List copy 010 Matrix copy 006 Matrix copy 007 NumMatrix copy 011
NumVector copy 008 ObjVector copy 009 Pair copy 009 PcodeVector copy 010
ShortVector copy 008 Structure copy 001 Vector copy 004 Vector copy 005


Function Links

Here is the link to the current function used in this example.


Here are a number of links to other related functions.



Argument Types

Here are the links to the data types of the arguments used in this example.


Here are a number of links to examples having similar argument types.

Dictionary isDictionary 001 Lambda ref 017 Matrix addMethod 008 Matrix append 007
Matrix apply 005 Matrix apply 006 Matrix binaryInsert 005 Matrix binarySearch 005
Matrix binarySearch 006 Matrix cdr 007 Matrix cdr 008 Matrix compare 007
Matrix compareEQ 007 Matrix compareGE 007 Matrix compareLE 007 Matrix compareNE 007
Matrix comparison functions 007 Matrix copy 006 Matrix copy 007 Matrix count 005
Matrix defMethod 009 Matrix delete 009 Matrix insert 005 Matrix inside 005
Matrix isAtom 005 Matrix isEqual 005 Matrix isIdentical 005 Matrix isMatrix 001
Matrix isNumberMatrix 001 Matrix isObject 007 Matrix isType 009 Matrix length 008
Matrix makeGaussianMatrix 001 Matrix makeGramMatrix 001 Matrix map 006 Matrix map 007
Matrix mapc 005 Matrix matrixGaussianEliminate 001 Matrix matrixGaussianSubstitute 001 Matrix member 005
Matrix methodsOf 010 Matrix new 009 Matrix new 010 Matrix objectToMatrix 001
Matrix objectToNumMatrix 001 Matrix rank 001 Matrix ref 015 Matrix ref 016
Matrix remove 005 Matrix resize 005 Matrix reverse 002 Matrix send 008
Matrix setCdr 005 Matrix setLastCdr 005 Matrix setq 014 Matrix sizeof 007
Matrix sort 012 Matrix type 010 Matrix uniqueInsert 004 Matrix vectorFill 002
NumMatrix cdr 011 NumMatrix isNumberMatrix 001 NumMatrix makeGramMatrix 001 NumMatrix matrixGaussianEliminate 001
NumMatrix matrixGaussianSubstitute 001 NumMatrix reverse 004 String isChar 001 String isCharAlphabetic 001
String isCharAlphanumeric 001 String isCharLowercase 001 String isCharName 001 String isCharNumeric 001
String isCharUppercase 001 String isCharWhitespace 001 String isEqual 001 String isEqual 002
String isObject 001 String isString 001 String isText 001 String isType 001
String isType 002 String isType 003 String parse 001 String sizeof 001
String string 001 String string 002 String string 003 String type 001
Symbol isCharName 002 Symbol isCharNumeric 002 Symbol isObject 002 Symbol isSymbol 001
Symbol isType 004 Symbol sizeof 002 Symbol type 002 Void compare 008
Void compareEQ 008 Void compareGT 008 Void compareNE 008

Analytic Information Server (AIS)

AIS Component Systems

  • Smartbase Engine
  • QT C++ Libraries
  • MySQL Relational Database
  • AIS Lisp Libraries
  • Rapid Analytic Demo IDE