feat(matrix): 添加矩阵求和功能 新增Sum()方法用于计算矩阵所有元素的总和, 遍历矩阵数据并累加所有元素值。 ``` |
||
|---|---|---|
| exmaples | ||
| LICENSE | ||
| README.md | ||
| go.mod | ||
| matrix.go | ||
| matrix_test.go | ||
README.md
gomatrix
gomatrix 是一个用Go语言编写的矩阵运算库,提供了创建和操作矩阵的功能,支持多种矩阵运算操作。
功能特性
- 创建矩阵(从数组、零矩阵、单位矩阵等)
- 矩阵基本运算(加法、减法、乘法)
- 矩阵乘法(线性代数意义上的矩阵乘法)
- 矩阵转置
- 矩阵数乘
- 访问和修改矩阵元素
- 多维矩阵支持
安装
go get git.kingecg.top/kingecg/gomatrix
使用示例
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 文件了解详情。