Commit 6e5f2f04 by Lian-runzhe Committed by GitHub

Update RustScript手册.md

parent 8b2b2e79
# RustScript 语言规范
# RustScript 语言规范
......@@ -259,8 +259,7 @@ tensor3d = [
函数:
get
语法:
element = get(t, row, col); // 获取指定位置的单个元素
注意:不支持 A[0,1] 这样的直接索引方式
element = get(t, row, col); // 获取指定位置的单个元素
输入参数:
t - 张量,若为稀疏矩阵,仅能获取非零元
row - 行索引,标量
......@@ -276,6 +275,7 @@ tensor3d = [
输入 get(sparse([0,0],[0,1],[1,2], 2, 2), 0, 1)
结果 2
```
**注意**:不支持 A[0,1] 这样的直接索引方式
### 6.2 张量切片
```rustscript
......@@ -304,10 +304,10 @@ tensor3d = [
输入 slice(a, [1, 2], [0])
结果 [[4, 5, 6]]
输入 slice(a, [1, 3], [0, 2])
输入 slice(a, [1, 3], [0, 2])
结果 [[4,5],[7,8]]
输入 slice(a, [0, 3, 2], [0, 3, 2])
输入 slice(a, [0, 3, 2], [0, 3, 2])
结果 [[1,3],[7,9]]
输入 slice(a, [0], 1)
......@@ -339,10 +339,10 @@ tensor3d = [
输入 select(a, [0,2])
结果 [[1, 2, 3], [7, 8, 9]]
输入 select(a, [], [0,2])
输入 select(a, [], [0,2])
结果 [[1,3], [4,6], [7,9]]
输入 select(a, 0, [0,2])
输入 select(a, 0, [0,2])
结果 [[1,3]]
```
......@@ -445,13 +445,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
t - 张量
dim - 指定维度,若该参数为空则返回各维度大小构成的向量
示例:
输入 size([[1., 0.5, 0.3, 0.2], [0.5, 1., 0.6, 0.5], [0.3, 0.6, 1., 0.7]])
输入 size([[1., 0.5, 0.3, 0.2], [0.5, 1., 0.6, 0.5], [0.3, 0.6, 1., 0.7]])
结果 [3,4]
输入 size([1, 2, 3], 0)
输入 size([1, 2, 3], 0) //一维张量dim参数只能为空或者0,返回元素个数
结果 3
输入 size([[1, 2, 3]], 0)
输入 size([[1, 2, 3]], 0) //二维张量中,为空范围行数*列数,“0”返回行数,“1”返回列数
结果 1
输入 size([[1, 2, 3]], 1)
......@@ -514,7 +514,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
B - 矩阵
若A的形状与B的形状相同,对应元素相加
若A为行向量且长度与B的列数相同,则B的每一行均与A相加,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相加,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相加,反之亦然
示例:
输入 [10,20]+[[1,2],[3,4]]
结果 [[11,22],[13,24]]
......@@ -522,10 +522,10 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [[10],[20]]+[[1,2],[3,4]]
结果 [[11,12],[23,24]]
输入 [c(-3,-4),c(-1,-2)]+[[c(1,2),c(3,4)],[c(5,6),c(7,8)]]
输入 [c(-3,-4),c(-1,-2)]+[[c(1,2),c(3,4)],[c(5,6),c(7,8)]]
结果 [[c(-2,-2),c(2,2)],[c(2,2),c(6,6)]]
输入 [2,3]+sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
输入 [2,3]+sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[2,5],[5,3],[2,9]]
```
##### 7.1.2.2 元素级减法
......@@ -539,7 +539,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
B - 矩阵
若A的形状与B的形状相同,对应元素相减
若A为行向量且长度与B的列数相同,则B的每一行均与A相减,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相减,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相减,反之亦然
示例:
输入 [10,20]-[[1,2],[3,4]]
结果 [[9,18],[7,16]]
......@@ -547,10 +547,10 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [[10],[20]]-[[1,2],[3,4]]
结果 [[9,8],[17,16]]
输入 [[c(1,2),c(3,4)],[c(5,6),c(7,8)]]-[c(-3,-4),c(-1,-2)]
输入 [[c(1,2),c(3,4)],[c(5,6),c(7,8)]]-[c(-3,-4),c(-1,-2)]
结果 [[c(4,6),c(4,6)],[c(8,10),c(8,10)]]
输入 [2,3]-sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
输入 [2,3]-sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[2,1],[-1,3],[2,3]]
```
##### 7.1.2.3 元素级乘法
......@@ -564,7 +564,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
B - 矩阵
若A的形状与B的形状相同,对应元素相乘
若A为行向量且长度与B的列数相同,则B的每一行均与A相乘,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相乘,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相乘,反之亦然
示例:
输入 [10,20].*[[1,2],[3,4]]
结果 [[10,40],[30,80]]
......@@ -589,7 +589,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
B - 矩阵
若A的形状与B的形状相同,对应元素相除
若A为行向量且长度与B的列数相同,则B的每一行均与A相除,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相除,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相除,反之亦然
示例:
输入 [10,20]./[[1,2],[3,4]]
结果 [[10,10],[10/3, 5]]
......@@ -612,12 +612,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入参数:
A - 矩阵
n - 标量
A中每个元素取n次幂
示例:
输入 [[1,2],[3,4]].^(-1)
结果 [[1,0.5], [1/3.,0.25]]
输入 [c(1,2),c(3,4)].^3
结果 [c(-3,4),c(-7,24)]
结果 [c(-11,-2),c(-117,44)]
输入 sparse([0,1,2],[1,0,1],[2,3,6], 3, 2).^3
结果 [[3, 2, 0], [0, 1, 8], [1, 0, 27], [2, 1, 216]]
......@@ -633,7 +634,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
B - 矩阵
若A的形状与B的形状相同,对应元素相模
若A为行向量且长度与B的列数相同,则B的每一行均与A相模,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相模,反之亦然
若A为列向量且长度与B的行数相同,则B的每一列均与A相模,反之亦然
示例:
输入 [10,20]%[[2,3],[4,5]]
结果 [[0,2],[2,0]]
......@@ -868,7 +869,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 det([[1,2],[3,4]])
结果 -2
输入 det([[c(1,2),c(3,4)],[c(5,6),c(7,8)]])
输入 det([[c(1,2),c(3,4)],[c(5,6),c(7,8)]])
结果 c(0,-16)
```
......@@ -881,21 +882,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A == B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
返回参数
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
示例:
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]==5
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]==5
结果 [[0,0,0],[0,1,0],[0,0,0]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]==[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]==[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
结果 [[0,1,0],[1,0,0],[0,0,1]]
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]==c(4,5)
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]==c(4,5)
结果 [[c(0,0), c(0,0), c(0,0)],[c(1,0), c(0,0), c(0,0)],[c(0,0), c(0,0), c(0,0)]]
```
#### 7.2.2 不等于
......@@ -906,21 +907,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A != B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
示例:
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]!=5
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]!=5
结果 [[1,1,1],[1,0,1],[1,1,1]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]!=[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]!=[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
结果 [[1,0,1],[0,1,1],[1,1,0]]
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]!=c(4,5)
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]!=c(4,5)
结果 [[c(1,0), c(1,0), c(1,0)],[c(0,0), c(1,0), c(1,0)],[c(1,0), c(1,0), c(1,0)]]
```
#### 7.2.3 小于
......@@ -931,21 +932,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A < B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
示例:
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<5
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<5
结果 [[1,1,1],[1,0,0],[0,0,0]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
结果 [[1,0,0],[0,0,0],[1,1,0]]
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]<c(4,5)
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]<c(4,5)
结果 [[c(1,0), c(1,0), c(1,0)],[c(0,0), c(0,0), c(0,0)],[c(0,0), c(0,0), c(0,0)]]
```
#### 7.2.4 小于等于
......@@ -956,21 +957,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A <= B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
示例:
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<=5
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<=5
结果 [[1,1,1],[1,1,0],[0,0,0]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<=[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<=[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
结果 [[1,1,0],[1,0,0],[1,1,1]]
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]<=c(4,5)
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]<=c(4,5)
结果 [[c(1,0), c(1,0), c(1,0)],[c(1,0), c(0,0), c(0,0)],[c(0,0), c(0,0), c(0,0)]]
```
#### 7.2.5 大于
......@@ -981,21 +982,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A > B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
示例:
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>5
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>5
结果 [[0,0,0],[0,0,1],[1,1,1]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
结果 [[0,0,1],[0,1,1],[0,0,0]]
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]>c(4,5)
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]>c(4,5)
结果 [[c(0,0), c(0,0), c(0,0)],[c(0,0), c(1,0), c(1,0)],[c(1,0), c(1,0), c(1,0)]]
```
#### 7.2.6 大于等于
......@@ -1006,21 +1007,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A >= B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行比较
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的比较结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的比较结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的比较结果
示例:
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>=5
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>=5
结果 [[0,0,0],[0,1,1],[1,1,1]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>=[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
输入 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>=[[2, 2, 2], [4, 4, 4], [9, 9, 9]]
结果 [[0,1,1],[1,1,1],[0,0,1]]
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]>=c(4,5)
输入 [[c(1,9), c(2,8), c(3,7)],[c(4,6), c(5,5), c(6,4)],[c(7,3), c(8,2), c(9,1)]]>=c(4,5)
结果 [[c(0,0), c(0,0), c(0,0)],[c(1,0), c(1,0), c(1,0)],[c(1,0), c(1,0), c(1,0)]]
```
......@@ -1033,21 +1034,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A && B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行逻辑运算
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行逻辑运算
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的逻辑运算结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的逻辑运算结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的逻辑运算结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的逻辑运算结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的逻辑运算结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的逻辑运算结果
示例:
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]&&5
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]&&5
结果 [[1,0,1],[0,1,1],[1,0,1]]
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]&&[[2, 0, 0], [0, 4, 0], [0, 0, 9]]
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]&&[[2, 0, 0], [0, 4, 0], [0, 0, 9]]
结果 [[1,0,0],[0,1,0],[0,0,1]]
输入 [[c(1,9), c(0,8), c(0,7)],[c(0,6), c(5,5), c(0,4)],[c(0,3), c(0,2), c(9,1)]]&&c(4,5)
输入 [[c(1,9), c(0,8), c(0,7)],[c(0,6), c(5,5), c(0,4)],[c(0,3), c(0,2), c(9,1)]]&&c(4,5)
结果 [[c(1,0), c(0,0), c(0,0)],[c(0,0), c(1,0), c(0,0)],[c(0,0), c(0,0), c(1,0)]]
```
#### 7.3.2 逻辑或
......@@ -1058,21 +1059,21 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
A || B;
输入参数:
A - 张量或标量
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行逻辑运算
B - 张量或标量
若A、B均为张量,A、B形状应相同
对于复数,取实部进行逻辑运算
返回参数:
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的逻辑运算结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的逻辑运算结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的逻辑运算结果
若A为标量、B为张量,则返回与B形状相同的张量,其中元素为A与B对应元素的逻辑运算结果
若A为张量、B为标量,则返回与A形状相同的张量,其中元素为A对应元素与B的逻辑运算结果
若A、B均为张量,则返回与二者形状相同的张量,其中元素为A对应元素与B对应元素的逻辑运算结果
示例:
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]||5
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]||5
结果 [[1,1,1],[1,1,1],[1,1,1]]
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]||[[2, 0, 0], [0, 4, 0], [0, 0, 9]]
输入 [[1, 0, 3], [0, 5, 6], [7, 0, 9]]||[[2, 0, 0], [0, 4, 0], [0, 0, 9]]
结果 [[1,0,1],[0,1,1],[1,0,1]]
输入 [[c(1,9), c(0,8), c(0,7)],[c(0,6), c(5,5), c(0,4)],[c(0,3), c(0,2), c(9,1)]]||c(4,5)
输入 [[c(1,9), c(0,8), c(0,7)],[c(0,6), c(5,5), c(0,4)],[c(0,3), c(0,2), c(9,1)]]||c(4,5)
结果 [[c(1,0), c(1,0), c(1,0)],[c(1,0), c(1,0), c(1,0)],[c(1,0), c(1,0), c(1,0)]]
```
#### 7.3.3 逻辑非
......@@ -1084,14 +1085,14 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入参数:
A - 张量或标量,对于复数,取实部进行逻辑运算
示例:
输入 ~~[[1, 0, 3], [0, 5, 6], [7, 0, 9]]
输入 ~~[[1, 0, 3], [0, 5, 6], [7, 0, 9]]
结果 [[0,1,0],[1,0,0],[0,1,0]]
输入 ~~[[c(1,9), c(0,8), c(0,7)],[c(0,6), c(5,5), c(0,4)],[c(0,3), c(0,2), c(9,1)]]
输入 ~~[[c(1,9), c(0,8), c(0,7)],[c(0,6), c(5,5), c(0,4)],[c(0,3), c(0,2), c(9,1)]]
结果 [[c(0,0), c(1,0), c(1,0)],[c(1,0), c(0,0), c(1,0)],[c(1,0), c(1,0), c(0,0)]]
电力系统实际使用示例:
bus_gen_status = ~~bus_gen_status; // 逻辑非运算
pq = find(bus_type == PQ || ~~bus_gen_status); // 组合逻辑运算
bus_gen_status = ~~bus_gen_status; // 逻辑非运算
pq = find(bus_type == PQ || ~~bus_gen_status); // 组合逻辑运算
```
### 7.4 位运算符
......@@ -1103,13 +1104,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
a & b;
输入参数:
a - 标量
b - 标量
对于复数,取实部进行位运算
b - 标量
对于复数,取实部进行位运算
示例:
输入 5&3
输入 5&3
结果 1
输入 c(6, 8)&c(4, 5)
输入 c(6, 8)&c(4, 5)
结果 c(4,0)
```
#### 7.4.2 位或
......@@ -1120,13 +1121,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
a | b;
输入参数:
a - 标量
b - 标量
对于复数,取实部进行位运算
b - 标量
对于复数,取实部进行位运算
示例:
输入 5|3
输入 5|3
结果 7
输入 c(6, 8)|c(4, 5)
输入 c(6, 8)|c(4, 5)
结果 c(6,0)
```
#### 7.4.3 位异或
......@@ -1137,13 +1138,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
a ^^ b;
输入参数:
a - 标量
b - 标量
对于复数,取实部进行位运算
b - 标量
对于复数,取实部进行位运算
示例:
输入 5^^3
输入 5^^3
结果 6
输入 c(6, 8)^^c(4, 5)
输入 c(6, 8)^^c(4, 5)
结果 c(2,0)
```
#### 7.4.4 位取反
......@@ -1155,10 +1156,10 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入参数:
a - 标量,对于复数,取实部进行位运算
示例:
输入 ~5
输入 ~5
结果 -6
输入 ~c(6, 8)
输入 ~c(6, 8)
结果 c(-7,0)
```
#### 7.4.5 位左移
......@@ -1169,13 +1170,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
a << b;
输入参数:
a - 标量
b - 标量
对于复数,取实部进行位运算
b - 标量
对于复数,取实部进行位运算
示例:
输入 5<<1
输入 5<<1
结果 10
输入 c(6, 8)<<c(2, 5)
输入 c(6, 8)<<c(2, 5)
结果 c(24,0)
```
#### 7.4.6 位右移
......@@ -1186,13 +1187,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
a >> b;
输入参数:
a - 标量
b - 标量
对于复数,取实部进行位运算
b - 标量
对于复数,取实部进行位运算
示例:
输入 5>>1
输入 5>>1
结果 2
输入 c(6, 8)>>c(2, 5)
输入 c(6, 8)>>c(2, 5)
结果 c(1,0)
```
#### 7.4.7 位取值
......@@ -1203,13 +1204,13 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
a @ b;
输入参数:
a - 标量
b - 标量
对于复数,取实部进行位运算
b - 标量
对于复数,取实部进行位运算
示例:
输入 5@1
输入 5@1
结果 1
输入 c(5, 8)@c(2, 5)
输入 c(5, 8)@c(2, 5)
结果 c(0,0)
```
......@@ -1259,11 +1260,6 @@ fn function_name(param1, param2, ...) {
return result;
}
// 简化返回语法(最后一个表达式作为返回值)
fn add(a, b) {
a + b
}
//函数支持多个返回
fn two_return_fn(input) {
return(input, input+1);
......@@ -1308,10 +1304,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 sqrt([[1,4],[9,16]])
结果 [[1,2], [3,4]]
输入 [c(-3,4), c(-7,24)]
输入 [c(-3,4), c(-7,24)]
结果 [c(1,2), c(3,4)]
输入 sqrt(sparse([0,1,2],[1,0,1],[4.,9.,36.], 3, 2))
输入 sqrt(sparse([0,1,2],[1,0,1],[4.,9.,36.], 3, 2))
结果 [[3, 2, 0], [0, 1, 2], [1, 0, 3], [2, 1, 6]]
```
### 10.1.2 自然指数函数
......@@ -1326,10 +1322,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 exp([[1,2],[3,4]])
结果 [[e,e^2],[e^3,e^4]]
输入 exp([c(1., pi/2), c(2, pi)])
输入 exp([c(1., pi/2), c(2, pi)])
结果 [c(0, e), c(-e^2, 0)]
输入 exp(sparse([0,0],[0,1],[1,2], 2, 2))
输入 exp(sparse([0,0],[0,1],[1,2], 2, 2))
结果 [[2, 2, 0], [0, 0, e], [0, 1, e^2]]
```
### 10.1.3 自然对数函数
......@@ -1344,10 +1340,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 ln([[1,e],[e^2,e^3]])
结果 [[0,1],[2,3]]
输入 ln([c(0,e), c(-e^2,0)])
输入 ln([c(0,e), c(-e^2,0)])
结果 [c(1, pi/2), c(2, pi)]
输入 ln(sparse([0,0],[0,1],[1,e], 2, 2))
输入 ln(sparse([0,0],[0,1],[1,e], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1]]
```
### 10.1.4 常用对数函数
......@@ -1362,10 +1358,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 log10([[1,10],[100,1000]])
结果 [[0.,1.],[2.,3.]]
输入 log10([c(0, 10), c(-100, 0)])
输入 log10([c(0, 10), c(-100, 0)])
结果 [c(1, 0.0.682188), c(2, 1.364376)]
输入 log10(sparse([0,0],[0,1],[1,10], 2, 2))
输入 log10(sparse([0,0],[0,1],[1,10], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1]]
```
### 10.1.5 正弦函数
......@@ -1380,10 +1376,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 sin([[0,pi/6],[pi/2,pi]])
结果 [[0,0.5],[1,0]]
输入 sin([c(1, 1), c(0, 1)])
输入 sin([c(1, 1), c(0, 1)])
结果 [c(1.298458, 0.634964), c(0, 1.175201)]
输入 sin(sparse([0,0],[0,1],[pi/6,pi/2], 2, 2))
输入 sin(sparse([0,0],[0,1],[pi/6,pi/2], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.5], [0, 1, 1]]
```
### 10.1.6 余弦函数
......@@ -1398,7 +1394,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 cos([[0,pi/3],[pi/2,pi]])
结果 [[1,0.5],[0,-1]]
输入 cos([c(1, 1), c(0, 1)])
输入 cos([c(1, 1), c(0, 1)])
结果 [c(0.833730, -0.988898), c(1.543081, 0)]
输入 cos(sparse([0,0],[0,1],[pi/3,pi/2], 2, 2))
......@@ -1419,7 +1415,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 tan([c(1, 1), c(0, 1)])
结果 [c(0.271753, 1.083923), c(0, 0.761594)]
输入 tan(sparse([0,0],[0,1],[pi/4,0.75*pi], 2, 2))
输入 tan(sparse([0,0],[0,1],[pi/4,0.75*pi], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -1]]
```
### 10.1.8 反正弦函数
......@@ -1434,10 +1430,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 asin([[0,0.5],[1,-0.5]])
结果 [[0,pi/6],[pi/2,-pi/6]]
输入 asin([c(2, 0), c(0, 1)])
输入 asin([c(2, 0), c(0, 1)])
结果 [c(pi/2, -ln(2+sqrt(3))), c(0, -ln(sqrt(2)-1))]
输入 asin(sparse([0,0],[0,1],[0.5,1], 2, 2))
输入 asin(sparse([0,0],[0,1],[0.5,1], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/6], [0, 1, pi/2]]
```
### 10.1.9 反余弦函数
......@@ -1452,7 +1448,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 acos([[1,0.5],[0,-1]])
结果 [[0,pi/3],[pi/2,pi]]
输入 acos([c(2, 0), c(0, 1)])
输入 acos([c(2, 0), c(0, 1)])
结果 [c(0, -ln(2+sqrt(3))), c(0, -ln(sqrt(2)+1))]
输入 acos(sparse([0,0],[0,1],[0.5,0], 2, 2))
......@@ -1473,7 +1469,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 atan([c(1, 0), c(1, 1)])
结果 [c(pi/4, 0), c(1.017222, 0.402359)]
输入 atan(sparse([0,0],[0,1],[1,-1], 2, 2))
输入 atan(sparse([0,0],[0,1],[1,-1], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/4], [0, 1, -pi/4]]
```
### 10.1.11 双曲正弦函数
......@@ -1488,10 +1484,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 sinh([[0,1],[-2,ln(3+sqrt(10))]])
结果 [[0,1.175201],[-3.626860,3]]
输入 sinh([c(1, 1), c(0, pi)])
输入 sinh([c(1, 1), c(0, pi)])
结果 [c(0.634964, 1.298458), c(0, 0)]
输入 sinh(sparse([0,0],[0,1],[1,-2], 2, 2))
输入 sinh(sparse([0,0],[0,1],[1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 1.175201], [0, 1, -3.626860]]
```
### 10.1.12 双曲余弦函数
......@@ -1506,10 +1502,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 cosh([[0,1],[-0.5,ln(2+sqrt(3))]])
结果 [[1.,1.543081],[1.127626,2]]
输入 cosh([c(1, 1), c(0, 1)])
输入 cosh([c(1, 1), c(0, 1)])
结果 [c(0.833730, 0.988898), c(0.540302, 0)]
输入 cosh(sparse([0,0],[0,1],[1,-0.5], 2, 2))
输入 cosh(sparse([0,0],[0,1],[1,-0.5], 2, 2))
结果 [[2, 2, 0], [0, 0, 1.543081], [0, 1, 1.127626]]
```
### 10.1.13 双曲正切函数
......@@ -1524,10 +1520,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 tanh([[0,1],[-2,ln(3)]])
结果 [[0,0.761594],[-0.964028,0.8]]
输入 tanh([c(1, 1), c(0, 1)])
输入 tanh([c(1, 1), c(0, 1)])
结果 [c(1.083923, 0.271753), c(0, 1.557408)]
输入 tanh(sparse([0,0],[0,1],[1,ln(3)], 2, 2))
输入 tanh(sparse([0,0],[0,1],[1,ln(3)], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.761594], [0, 1, 0.8]]
```
### 10.1.14 双曲反正弦函数
......@@ -1542,10 +1538,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 asinh([[0,1],[-2,3]])
结果 [[0, 0.881374],[-1.443635, ln(3+sqrt(10))]]
输入 asinh([c(1, 1), c(0, 1)])
输入 asinh([c(1, 1), c(0, 1)])
结果 [c(1.061275, 0.666239), c(0, pi/2)]
输入 asinh(sparse([0,0],[0,1],[1,-2], 2, 2))
输入 asinh(sparse([0,0],[0,1],[1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.881374], [0, 1, -1.443635]]
```
### 10.1.15 双曲反余弦函数
......@@ -1560,10 +1556,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 acosh([[1,2],[cosh(3),5]])
结果 [[0,1.316958],[3,ln(5+2*sqrt(6))]]
输入 acosh([c(0, 0), c(0, 1)])
输入 acosh([c(0, 0), c(0, 1)])
结果 [c(0, pi/2), c(0.881374, pi/2)]
输入 acosh(sparse([0,0],[0,1],[2,cosh(3)], 2, 2))
输入 acosh(sparse([0,0],[0,1],[2,cosh(3)], 2, 2))
结果 [[2, 2, 0], [0, 0, 1.316958], [0, 1, 3]]
```
### 10.1.16 双曲反正切函数
......@@ -1578,10 +1574,10 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 atanh([[0,0.5],[-2/3,3/4]])
结果 [[0, 0.549306],[-0.804719,0.5*ln(7)]]
输入 atanh([c(2, 0), c(0, 1)])
输入 atanh([c(2, 0), c(0, 1)])
结果 [c(0.5*ln(3), -pi/2), c(0, pi/4)]
输入 atanh(sparse([0,0],[0,1],[0.5,-2/3], 2, 2))
输入 atanh(sparse([0,0],[0,1],[0.5,-2/3], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.549306], [0, 1, -0.804719]]
```
### 10.1.17 绝对值函数
......@@ -1596,7 +1592,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 abs([[0,-1],[-2,3]])
结果 [[0,1],[2,3]]
输入 abs(sparse([0,0],[0,1],[-1,-2], 2, 2))
输入 abs(sparse([0,0],[0,1],[-1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, 2]]
```
### 10.1.18 符号函数
......@@ -1611,7 +1607,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 signum([[0,-1],[-2,3]])
结果 [[1,-1],[-1,1]]
输入 signum([c(0,-1), c(-2,3)])
输入 signum([c(0,-1), c(-2,3)])
结果 [c(1, 0), c(-1, 0)]
输入 signum(sparse([0,0],[0,1],[-2,3], 2, 2))
......@@ -1629,7 +1625,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 floor([[0.6,-2.3],[1.3,-3.6]])
结果 [[0,-3],[1,-4]]
输入 floor([c(0.6,-2.3), c(1.3,-3.6)])
输入 floor([c(0.6,-2.3), c(1.3,-3.6)])
结果 [c(0, 0), c(1, 0)]
输入 floor(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
......@@ -1647,7 +1643,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 ceil([[0.6,-2.3],[1.3,-3.6]])
结果 [[1,-2],[2,-3]]
输入 ceil([c(0.6,-2.3), c(1.3,-3.6)])
输入 ceil([c(0.6,-2.3), c(1.3,-3.6)])
结果 [c(1, 0), c(2, 0)]
输入 ceil(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
......@@ -1665,7 +1661,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 round([[0.6,-2.3],[1.3,-3.6]])
结果 [[1,-2],[1,-4]]
输入 round([c(0.6,-2.3), c(1.3,-3.6)])
输入 round([c(0.6,-2.3), c(1.3,-3.6)])
结果 [c(1, 0), c(1, 0)]
输入 round(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
......@@ -1683,7 +1679,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 deg2rad([30, 45])
结果 [pi/6, pi/4]
输入 deg2rad([c(30, 45), c(60, 90)])
输入 deg2rad([c(30, 45), c(60, 90)])
结果 [c(pi/6, pi/4), c(pi/3, pi/2)]
输入 deg2rad(sparse([0,0], [0,1], [30,45], 2, 2))
......@@ -1701,7 +1697,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 rad2deg([pi, pi/2])
结果 [180, 90]
输入 rad2deg([c(pi/6, pi/4), c(pi/3, pi/2)])
输入 rad2deg([c(pi/6, pi/4), c(pi/3, pi/2)])
结果 [c(30, 45), c(60, 90)]
输入 rad2deg(sparse([0,0], [0,1], [pi/2,pi], 2, 2))
......@@ -1797,7 +1793,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 det([[1,2],[3,4]])
结果 -2
输入 det([[c(1,2),c(3,4)],[c(5,6),c(7,8)]])
输入 det([[c(1,2),c(3,4)],[c(5,6),c(7,8)]])
结果 c(0,-16)
```
### 10.2.1.2 逆矩阵
......@@ -2051,7 +2047,7 @@ reshape(A, m, n), repmat(A, m, n)
t - 张量
dim - 指定维度,若该参数为空则返回各维度大小构成的向量
示例:
输入 size([[1., 0.5, 0.3, 0.2], [0.5, 1., 0.6, 0.5], [0.3, 0.6, 1., 0.7]])
输入 size([[1., 0.5, 0.3, 0.2], [0.5, 1., 0.6, 0.5], [0.3, 0.6, 1., 0.7]])
结果 [3,4]
输入 size([1, 2, 3], 0)
......@@ -2078,7 +2074,7 @@ reshape(A, m, n), repmat(A, m, n)
输入参数:
t - 张量,若为稀疏矩阵,返回非零元个数
示例:
输入 length([1, 2, 3])
输入 length([1, 2, 3])
结果 3
输入 length([[c(1, 2), c(3, 4)], [c(5, 6), c(7, 8)]])
......@@ -2138,10 +2134,10 @@ numel(tensor) // 元素个数
输入 slice(a, [1, 2], [0])
结果 [[4, 5, 6]]
输入 slice(a, [1, 3], [0, 2])
输入 slice(a, [1, 3], [0, 2])
结果 [[4,5],[7,8]]
输入 slice(a, [0, 3, 2], [0, 3, 2])
输入 slice(a, [0, 3, 2], [0, 3, 2])
结果 [[1,3],[7,9]]
输入 slice(a, [0], 1)
......@@ -2170,7 +2166,7 @@ numel(tensor) // 元素个数
输入 set([[1, 2], [3, 4]], [2, 0], [-1, -3])
结果 [[-3, 2], [-1, 4]]
输入 set([c(1, 2), c(3, 4), c(5, 6), c(7, 8)], [c(1, 0), c(2, 0)], [c(-3, -4), c(-5, -6)])
输入 set([c(1, 2), c(3, 4), c(5, 6), c(7, 8)], [c(1, 0), c(2, 0)], [c(-3, -4), c(-5, -6)])
结果 [c(1, 2), c(-3, -4), c(-5, -6), c(7, 8)]
输入 set(sparse([0,0],[0,1],[1,2], 2, 2), [1, 3], [3, 4])
......@@ -2193,7 +2189,7 @@ numel(tensor) // 元素个数
输入 set2([[1, 2], [3, 4]], [2, 0], [-1, -3])
结果 [[-3, 2], [-1, 4]]
输入 set2([c(1, 2), c(3, 4), c(5, 6), c(7, 8)], [c(1, 0), c(2, 0)], [c(-3, -4), c(-5, -6)])
输入 set2([c(1, 2), c(3, 4), c(5, 6), c(7, 8)], [c(1, 0), c(2, 0)], [c(-3, -4), c(-5, -6)])
结果 [c(1, 2), c(0, 0), c(0, 0), c(7, 8)]
输入 set2(sparse([0,0],[0,1],[1,2], 2, 2), [1, 3], [3, 4])
......@@ -2807,7 +2803,7 @@ fn make_y_bus(baseMVA, bus, branch) {
- 例如:母线编号仍然是1, 2, 3...
**函数转换(转换为0基索引):**
- 函数中的索引操作需要转换:`A(i)` → `A[i-1]`
- 循环变量需要调整:`for i = 1:n` → `for i in range(0, n)`
- 函数中的索引操作需要转换:`A(i)` → `get(A, i-1)`
- 循环变量需要调整:`for i = 1:n` → `for i in 0..n-1`
- 序列生成需要转换:`1:n` → `range(1, n+1)` 或 `range(0, n)`
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论