first commit
This commit is contained in:
commit
6f07b38370
|
|
@ -0,0 +1,109 @@
|
|||
# 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) 文件了解详情。
|
||||
Loading…
Reference in New Issue