// // Matrix.swift // PrySDR // // Created by Jacky Jack on 20/10/2024. // enum MatrixOperationError:Error { case columnValue case rowValue } /// Matrix Data Type class Matrix { /// matrix row number let rows: Int /// matrix column number let columns: Int /// array where matrix is stored var data: [Float] /// Create NxM matrix /// - Parameters: /// - rows: number of rows in matrix /// - columns: number of columns in matrix /// - val: default value of matrix elements init(rows: Int, columns: Int, val: Float) throws { if (rows < 1) { throw MatrixOperationError.columnValue } if (columns < 1) { throw MatrixOperationError.rowValue } self.rows = rows self.columns = columns self.data = Array(repeating: 0.0, count: rows*columns) //print(self.data) } /// Set elements to value /// - Parameters: /// - val: value to set func set(_ val: Float) { for idx in 0.. Matrix { return try! Matrix.init(rows: rows, columns: columns, val: 0.0) } /// Return identity matrix /// - Parameters: /// - rows: number of rows in matrix /// - columns: number of columns in matrix func one(_ rows: Int, _ columns: Int) -> Matrix { return try! Matrix.init(rows: rows, columns: columns, val: 1.0) }