109 lines
2.7 KiB
Markdown
109 lines
2.7 KiB
Markdown
# 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) 文件了解详情。 |