Matrix
Since memory is linear and access to memory is alike accesing cells in 1-dimensional array, proper repr of matrix in memory is not possible. However, even if forever stuck with a linear memory, we can pull out a matrix layout, all eith the appropriate methods that accept matrix-like form of indice; they'll get translated into the plain linear indices and that is the area we'retrying to abstract or at least discover useful rules.
In the simplest case, a matrix has 2 dimensions, x
and y
(in fact, 1D matrix is the simplest and the special case, but it also enrails reffereingto it by the special name, vector).
Translating between indices of array and matrix.
matrix2d to array, and array to matrix2d
matrixNd to array
The 9 cell quadrant in the continuous (limitless) table.
array
vector
matrix
tensor
1. INDEX CONVERSIONS
Translating between indices of array and matrix.
Translating between coordinates of (2-dimensional) matrix, M[col,row]
, into the index of a linear (1-dimensional) array, Array[n]
.
x
is the total number of columns in a matrix.A[n] is the notation for array.
M[col,row] or M[c][r] is the notation for 2D matrix:
any cell is identified by column,
c
, and row,r
, ordered pair.
Matrix to array
Matrix[c][r] = Array[c + r * x] = Array[n]
Example: Matrix[2][2] = Array[2 + 2 * 4] = Array[10]
Array to matrix
To convert array's index into matrix' col,row coordinates, perform Euclidian division on the index of array, n
and x
(total nr of columns). So that the pair (quotient, remainder)
is (col, row)
:
Array[n]: (n / x) = (quot, rem) => Matrix[quot = col][rem = rows]
Example: Array[7]: (7/4) = (1,3) => Matrix[1][3]
2. SECTIONS
The 9 cell quadrant and limitless space.
Models
c | RoW| c c c
l
00 01 02
h v w
c f s
r0
00
01
02
r1
03
04
05
r2
06
07
08
crd - x : y : z CRD - col:row:dep
x = 0 x=1 x=2 x=3
.-----. .-----. .-----. .-----. /002/| / 102 / / 202 / / 302 / d=2 /001/ | / 101 / / 201 / / 301 / d=1 f-----i | f-----i f-----i f-----i d=0 |000
| /| |100
| |200
| |300
| r=0 t-----i/ | t-----j t-----j t-----j
| ...⊥..| | .-----. | .-----. | .-----.
| /012/| | / 112 / | / 212 / | / 312 / d=2 |/011/ | |/ 111 / |/ 211 / |/ 311 / d=1 |-----| | |-----| |-----| |-----| d=0 |010
| /| |110
| |210
| |310
| r=1 i-----i/ | i-----i i-----i i-----i
| ,..⊥..i | .-----. | .-----. | .-----.
| /022/| | / 122 / | / 222 / | / 322 / d=2 |/021/ | |/ 121 / |/ 221 / |/ 321 / d=1 |-----| | |-----| |-----| |-----| d=0 |020
| / |120
| |220
| |320
| r=2 L-----i/ L-----j L-----i L-----J
⊕ ⊕ ⊕ ⊕ ⊕ ⊕ ⊕ ⊕
e.g. M[x][y][z] M[c][r][d] M[1][1][1] = x + y*Y + z*Z
000,001,002 | 100,101,102 | 200,201,202 | 300,301,302
ASCII MODELS
MATRIX 3D
c | RoW| c c c
l
00 01 02
h v w
c f s
r0
00
01
02
r1
03
04
05
r2
06
07
08
MATRIX 3D
ARRAY: 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 9 4 b 2 a 1 8 7 0 5 3 6
CHECK: Ma[0, 0] = A[0] Ma[1, 0] = A[1] Ma[2, 0] = A[2] Ma[3, 0] = A[3]
Ma[0, 1] = A[4] Ma[1, 1] = A[5] Ma[2, 1] = A[6] Ma[3, 1] = A[7]
Ma[0, 2] = A[8] Ma[1, 2] = A[9] Ma[2, 2] = A[10] Ma[3, 2] = A[11]
… ⋯ ⋮ ⋱ ⌜ ⌝ ¤ § · ⊻ √ ∝ ∟ ∫ 𐌣 ☇ → ← ↓ ↑ ↗ ↘ ↙ ↖ ↔ ∞ ≈ ≌ ≠ ≤ ≥ ⥽ ∵ ∴ ± ∓ × ÷ ⊕ ⊗ ≡ ⇔ ⇒ ⊢ ⊨ ╳ ∅ ∪ ∩ ⊆ ⊂ ⊃ ∈ ∉ ∋ ∀ ∃ ∄ ¬ ∨ ∧ ⊥ ⊤ ♯ # №
≤ ≥ ÷ ≈ ∞ ‼ ← ° √ ⁿ ² ∞ ≡ ± † ‡ ※ ¶ ¿ § ₪ ¤ ❖ ℃ ℓ ℡ ƒ ฯ Ω Å ㎏ ㎐ ㎒ ㎓
===============================================================
Translating 2D matrix, into a linear array
2D matrix of size
R*C
is translated into a linear array withR*C
cols.R
number of columns in the matrix 4C
num of rows in the matrix 3matrix rows and columns both start at 0
i
iterates over matrix columns i=0..3,i=0..C--
j
iterates over matrix rows j=0..2,j=0..R--
m[c][r] -> a[c]
m[0][0] -> a[0] 1st col, 1st row: m[0][0] = 0
m[0][1] -> a[1] 1st col, 2nd row
m[0][2] -> a[2]
m[0][3] -> a[3]
m[0][y] -> a[0]
c o l s | c o l s | c o l s 0 1 2 3 | 4 5 6 7 | 8 9 10 11
1 row
0 1 2 3 | 0 1 2 3 | 0 1 2 3 3 x row 9 4 b 2 | a 1 8 7 | 0 5 3 6 cells
0 1 2 3
4 5 6 7
8 9 a b
9 4 b 2
a 1 8 7
0 5 3 6
c
: col iter c_l
(first col index), 0 c_h
(last col index), 3 C
(num of cols), = (c_h + 1 - c_l
1+3-0 = 4 for c
= 0:c_l
to 3 :c_h
r
: row iter r_f
: first row, 0 c_l
: last row, 2 C
= c_l - c_f
(num of cols), 2 - 0 = 2 rows for c
= c_f
to c_l
(for c = 0...3)
0 1 2 3 3+1 - 0 = 4
1 2 3 4 4+1 - 1 = 4
-5 -4 -3 -2 -2+1 - -5 = 4 = -1 + 5
getTotalColumns:
Hi+1 - Lo
M[c, r] = A[c + r*Ri]
Ma[0, 0] = A[0] Ma[1, 0] = A[1] Ma[2, 0] = A[2] Ma[3, 0] = A[3]
Ma[0, 1] = A[4] Ma[1, 1] = A[5] Ma[2, 1] = A[6] Ma[3, 1] = A[7]
Ma[0, 2] = A[8] Ma[1, 2] = A[9] Ma[2, 2] = A[10] Ma[3, 2] = A[11]
(c , r) matrix (r , c) (c + r x R) array (r x R + c) (0, 2) (0 + 2*4) = 8
Case 2: Infinite space, pacman-like-style
Going off of the screen in certian direction, you reappear at the opposite side of the table, moving in the opposite direction.
D4: 𐌣 → ↓ ←
, NESW
, LRUD
d8: 𐌣 ↗ → ↘ ↓ ↙ ← ↖
, N NE E SE S SW W NW
Last updated
Was this helpful?