# gomatrix `gomatrix` 是一个用Go语言编写的矩阵运算库,提供了创建和操作矩阵的功能,支持多种矩阵运算操作。 ## 功能特性 - 创建矩阵(从数组、零矩阵、单位矩阵等) - 矩阵基本运算(加法、减法、乘法) - 矩阵乘法(线性代数意义上的矩阵乘法) - 矩阵转置 - 矩阵数乘 - 访问和修改矩阵元素 - 多维矩阵支持 ## 安装 ```bash go get git.kingecg.top/kingecg/gomatrix ``` ## 使用示例 ```go package main import ( "fmt" "git.kingecg.top/kingecg/gomatrix" ) func main() { // 创建一个2x3的矩阵 data := []float64{1, 2, 3, 4, 5, 6} mat, err := gomatrix.NewMatrix(data, []int{2, 3}) if err != nil { fmt.Printf("创建矩阵失败: %v\n", err) return } fmt.Printf("矩阵:\n%s\n", mat.String()) // 创建另一个矩阵进行运算 data2 := []float64{7, 8, 9, 10, 11, 12} mat2, err := gomatrix.NewMatrix(data2, []int{2, 3}) if err != nil { fmt.Printf("创建矩阵失败: %v\n", err) return } // 矩阵加法 sum, err := mat.Add(mat2) if err != nil { fmt.Printf("矩阵加法失败: %v\n", err) return } fmt.Printf("矩阵相加结果:\n%s\n", sum.String()) // 矩阵乘法 data3 := []float64{1, 2, 3, 4, 5, 6} mat3, err := gomatrix.NewMatrix(data3, []int{3, 2}) if err != nil { fmt.Printf("创建矩阵失败: %v\n", err) return } data4 := []float64{1, 2, 3, 4} mat4, err := gomatrix.NewMatrix(data4, []int{2, 2}) if err != nil { fmt.Printf("创建矩阵失败: %v\n", err) return } product, err := mat3.MatMul(mat4) if err != nil { fmt.Printf("矩阵乘法失败: %v\n", err) return } fmt.Printf("矩阵乘法结果:\n%s\n", product.String()) } ``` ## API 文档 ### 构造函数 - `NewMatrix(data []float64, shape []int)`: 从给定的数据和形状创建矩阵 - `NewZeros(shape []int)`: 创建指定形状的零矩阵 - `NewOnes(shape []int)`: 创建指定形状的全1矩阵 - `NewIdentity(size int)`: 创建指定大小的单位矩阵 ### 矩阵运算 - `Add(other *Matrix)`: 矩阵加法 - `Subtract(other *Matrix)`: 矩阵减法 - `Multiply(other *Matrix)`: 矩阵元素对应相乘 - `MatMul(other *Matrix)`: 矩阵乘法(线性代数乘法) - `Scale(factor float64)`: 矩阵数乘 - `Transpose()`: 矩阵转置 ### 其他方法 - `Get(indices ...int)`: 获取指定位置的值 - `Set(value float64, indices ...int)`: 设置指定位置的值 - `String()`: 返回矩阵的字符串表示 - `Shape()`: 返回矩阵的形状 - `Size()`: 返回矩阵的大小 ## 许可证 本项目采用 MIT 许可证 - 请参阅 [LICENSE](LICENSE) 文件了解详情。