KMatrix
A simple matrix implementation for kotlin using Kotlin DSL
Usage
Creating a matrix
val matrix = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
Get matrix dimensions size
val matrix = Matrix {
row(2, 4)
row(8, 10)
row(9, 22)
}
val rowSize = matrix.rowSize
val columnSize = matrix.columnSize
println("$rowSize * $columnSize matrix")
3 * 2 matrix
Get a matrix element
val element = matrix[1, 2]
Get a matrix row elements
val row = matrix.getRow(0)
Get a matrix column elements
val column = matrix.getColumn(0)
Multiplay two matrices
val scale = Matrix {
row(5, 0, 0)
row(0, 5, 0)
row(0, 0, 5)
}
val point = Matrix {
row(10)
row(7)
row(2)
}
val result = scale * point
println(result)
┌──────┐
│ 50.0 │
├──────┤
│ 35.0 │
├──────┤
│ 10.0 │
└──────┘
Adding two matrices
val matrix1 = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
val matrix2 = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
val result = matrix1 + matrix2
println(result)
┌──────┬──────┬──────┐
│ 2.0 │ 4.0 │ 6.0 │
├──────┼──────┼──────┤
│ 8.0 │ 10.0 │ 12.0 │
├──────┼──────┼──────┤
│ 14.0 │ 16.0 │ 18.0 │
└──────┴──────┴──────┘
Subtract two matrices
val matrix1 = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 18)
}
val matrix2 = Matrix {
row(1, 2, 3)
row(4, 5, 6)
row(7, 8, 9)
}
val result = matrix1 - matrix2
println(result)
┌─────┬─────┬─────┐
│ 1.0 │ 2.0 │ 3.0 │
├─────┼─────┼─────┤
│ 4.0 │ 5.0 │ 6.0 │
├─────┼─────┼─────┤
│ 7.0 │ 8.0 │ 9.0 │
└─────┴─────┴─────┘
Get the transpose of a matrix
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
val transposed = matrix.transpose()
println(transposed)
┌─────┬──────┐
│ 2.0 │ 8.0 │
├─────┼──────┤
│ 4.0 │ 10.0 │
└─────┴──────┘
Mapping a matrix
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 18)
}
val newMatrix = matrix.map {
it/2
}
println(newMatrix)
┌─────┬─────┬─────┐
│ 1.0 │ 2.0 │ 3.0 │
├─────┼─────┼─────┤
│ 4.0 │ 5.0 │ 6.0 │
├─────┼─────┼─────┤
│ 7.0 │ 8.0 │ 9.0 │
└─────┴─────┴─────┘
Get the element’s first indexes
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 18)
}
val index = matrix.indexOf(2.0)
println(index)
(0, 0)
Get the element’s last indexes
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val index = matrix.lastIndexOf(2.0)
println(index)
(2, 2)
Iterate on a matrix
Using forEach
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
matrix.forEach {
println(it)
}
2.0
4.0
8.0
10.0
Using forEachIndexed
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
matrix.forEachIndexed { x, y, d ->
println("($x, $y) = $d")
}
(0, 0) = 2.0
(1, 0) = 4.0
(0, 1) = 8.0
(1, 1) = 10.0
Convert matrix to list
val matrix = Matrix {
row(2, 4)
row(8, 10)
}
val list = matrix.toList()
println(list)
[2.0, 4.0, 8.0, 10.0]
Get the matrix elements sum
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val sum = matrix.sum()
Check if the matrix contains a value
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val flag = matrix.contains(4)
Check if the matrix contains a list of values
val matrix = Matrix {
row(2, 4, 6)
row(8, 10, 12)
row(14, 16, 2)
}
val flag = matrix.containsAll(listOf(2, 4, 10))
Download
? Working on it ?
License
Copyright 2022 mhssn
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.