Commit 9cf68ff4 by xuchengsi

补充张量生成方法说明

parent bfe07d45
# RustScript 语言规范
# RustScript 语言规范
......@@ -163,9 +163,65 @@ PD = 2;
QD = 3;
```
## 5. 张量操作
## 5. 创建张量
### 5.1 张量索引
### 5.1 创建全0张量
```rustscript
函数
zeros
语法
t = zeros(s1, s2, ..., si, ...);
输入参数
si - 标量,生成张量的第i维长度
示例
输入 zeros(3,4)
结果 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
```
### 5.2 创建全1张量
```rustscript
函数
ones
语法
t = ones(s1, s2, ..., si, ...);
输入参数
si - 标量,生成张量的第i维长度
示例
输入 ones(3,4)
结果 [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
```
### 5.3 创建单位矩阵
```rustscript
函数
eye
语法
t = eye(s);
输入参数
s - 标量,生成矩阵阶数
示例
输入 eye(3)
结果 [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
```
### 5.4 创建序列
```rustscript
函数
range
语法
t = range(start, end, step);
输入参数
start - 标量,起始值
end - 标量,终止值
step - 标量,步长
示例
输入 range(1, 10, 2)
结果 [1, 3, 5, 7, 9]
```
## 6. 张量操作
### 6.1 张量索引
```rustscript
函数
get
......@@ -188,7 +244,7 @@ QD = 3;
结果 2
```
### 5.2 张量切片
### 6.2 张量切片
```rustscript
函数
slice
......@@ -232,7 +288,7 @@ QD = 3;
angle = slice(bus, [0], VA-1); // 所有行,VA列(一维张量)
```
### 5.3 获取张量指定行列
### 6.3 获取张量指定行列
```rustscript
函数
select
......@@ -257,7 +313,7 @@ QD = 3;
结果 [[1,3]]
```
### 5.4 张量赋值操作
### 6.4 张量赋值操作
```rustscript
函数
assign
......@@ -315,8 +371,8 @@ QD = 3;
assign(bus, new_angles, [0], VA-1); // 更新电压角度
```
### 5.5 张量形状和维度
#### 5.5.1 重要概念区分
### 6.5 张量形状和维度
#### 6.5.1 重要概念区分
```rustscript
a = [1, 2, 3]; // 一维张量, shape: [3]
b = [[1, 2, 3]]; // 行向量(二维张量), shape: [1, 3]
......@@ -327,7 +383,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
- 行向量和列向量都属于二维张量,但形状不同
- slice和assign函数的行为取决于参数格式和返回的张量维度
```
#### 5.5.2 获取张量维数
#### 6.5.2 获取张量维数
```rustscript
函数
ndim
......@@ -345,7 +401,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 ndim([[1], [2], [3]])
结果 2
```
#### 5.5.3 获取指定维度大小
#### 6.5.3 获取指定维度大小
```rustscript
函数
size
......@@ -374,46 +430,46 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 1
```
## 6. 运算符
### 6.1 算术运算符
#### 6.1.1 标量运算
##### 6.1.1.1 加法
## 7. 运算符
### 7.1 算术运算符
#### 7.1.1 标量运算
##### 7.1.1.1 加法
```rustscript
运算符
+
语法
a + b;
```
##### 6.1.1.2 减法
##### 7.1.1.2 减法
```rustscript
运算符
-
语法
a - b;
```
##### 6.1.1.3 乘法
##### 7.1.1.3 乘法
```rustscript
运算符
*
语法
a * b;
```
##### 6.1.1.4 除法
##### 7.1.1.4 除法
```rustscript
运算符
/
语法
a / b;
```
##### 6.1.1.5 幂运算
##### 7.1.1.5 幂运算
```rustscript
运算符
^
语法
a ^ b;
```
#### 6.1.2 元素级运算(张量)
##### 6.1.2.1 元素级加法
#### 7.1.2 元素级运算(张量)
##### 7.1.2.1 元素级加法
```rustscript
运算符
+
......@@ -438,7 +494,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [2,3]+sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[2,5],[5,3],[2,9]]
```
##### 6.1.2.2 元素级减法
##### 7.1.2.2 元素级减法
```rustscript
运算符
-
......@@ -463,7 +519,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [2,3]-sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[2,1],[-1,3],[2,3]]
```
##### 6.1.2.3 元素级乘法
##### 7.1.2.3 元素级乘法
```rustscript
运算符
.*
......@@ -488,7 +544,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [2,3].*sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[0,6],[6,0],[0,18]]
```
##### 6.1.2.4 元素级除法
##### 7.1.2.4 元素级除法
```rustscript
运算符
./
......@@ -513,7 +569,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)./[2,3]
结果 [[0,2/3],[1.5,0],[0,2]]
```
##### 6.1.2.5 元素级幂运算
##### 7.1.2.5 元素级幂运算
```rustscript
运算符
.^
......@@ -532,7 +588,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 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]]
```
##### 6.1.2.6 元素级模运算
##### 7.1.2.6 元素级模运算
```rustscript
运算符
%
......@@ -554,8 +610,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [7,9]%sparse([0,0,1,1],[0,1,0,1],[2,3,4,6], 2, 2)
结果 [[1,0],[3,3]]
```
#### 6.1.3 矩阵运算
##### 6.1.3.1 矩阵加法
#### 7.1.3 矩阵运算
##### 7.1.3.1 矩阵加法
```rustscript
运算符
+
......@@ -579,7 +635,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2,3,6],3,2)+sparse([0,1,2],[0,0,0],[2,4,6],3,2)
结果 [[3, 2, 0], [0, 0, 2], [0, 1, 2], [1, 0, 7], [2, 0, 6], [2, 1, 6]]
```
##### 6.1.3.2 矩阵减法
##### 7.1.3.2 矩阵减法
```rustscript
运算符
-
......@@ -603,7 +659,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2,3,6],3,2)-sparse([0,1,2],[0,0,0],[2,4,6],3,2)
结果 [[3, 2, 0], [0, 0, -2], [0, 1, 2], [1, 0, -1], [2, 0, -6], [2, 1, 6]]
```
##### 6.1.3.3 矩阵标量乘法
##### 7.1.3.3 矩阵标量乘法
```rustscript
运算符
*
......@@ -623,7 +679,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 2*sparse([1,2],[1,2],[2,3], 3, 3)
结果 [[3,3,0],[1,1,4],[2,2,6]]
```
##### 6.1.3.4 矩阵标量除法
##### 7.1.3.4 矩阵标量除法
```rustscript
运算符
/
......@@ -642,7 +698,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([1,2],[1,2],[2,3], 3, 3)/2
结果 [[3,3,0],[1,1,1],[2,2,1.5]]
```
##### 6.1.3.5 矩阵乘法
##### 7.1.3.5 矩阵乘法
```rustscript
运算符
*
......@@ -666,7 +722,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2.0, 3.0, 6.0], 3, 2)*sparse([0,1,1],[1,0,2],[2.0, 4.0, 6.0], 2, 3)
结果 [[3, 3, 0], [0, 0, 8], [0, 2, 12], [1, 1, 6], [2, 0, 24], [2, 2, 36]]
```
##### 6.1.3.6 矩阵右除
##### 7.1.3.6 矩阵右除
```rustscript
运算符
/
......@@ -690,7 +746,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,0,1,1],[0,1,0,1],[19,22,43,50], 2, 2)/sparse([0,0,1,1],[0,1,0,1],[1,2,3,4], 2, 2)
结果 [[2, 2, 0], [0, 0, -5], [0, 1, 8], [1, 0, -11], [1, 1, 18]]
```
##### 6.1.3.7 矩阵左除
##### 7.1.3.7 矩阵左除
```rustscript
运算符
\
......@@ -714,7 +770,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,0,1,1],[0,1,0,1],[2,1,1,-3], 2, 2)\sparse([0,1],[0,0],[5,-1], 2, 1)
结果 [[2, 1, 0], [0, 0, 2], [1, 0, 1]]
```
##### 6.1.3.8 矩阵幂
##### 7.1.3.8 矩阵幂
```rustscript
运算符
^
......@@ -736,7 +792,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2, 3, 6], 3, 3)^3
结果 [[3, 3, 0], [0, 1, 12], [1, 0, 18], [2, 1, 36]]
```
##### 6.1.3.9 转置
##### 7.1.3.9 转置
```rustscript
运算符
'
......@@ -754,7 +810,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2)'
结果 [[2, 3, 0], [1, 0, 2], [0, 1, 3], [1, 2, 6]]
```
##### 6.1.3.10 逆矩阵
##### 7.1.3.10 逆矩阵
```rustscript
运算符
^(-1)
......@@ -766,7 +822,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [[1,2],[3,4]]^(-1)
结果 [[-2, 1], [1.5, -0.5]]
```
##### 6.1.3.11 行列式
##### 7.1.3.11 行列式
```rustscript
函数
det
......@@ -782,8 +838,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 c(0,-16)
```
### 6.2 比较运算符
#### 6.2.1 等于
### 7.2 比较运算符
#### 7.2.1 等于
```rustscript
运算符
==
......@@ -808,7 +864,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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(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)]]
```
#### 6.2.2 不等于
#### 7.2.2 不等于
```rustscript
运算符
!=
......@@ -833,7 +889,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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,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)]]
```
#### 6.2.3 小于
#### 7.2.3 小于
```rustscript
运算符
<
......@@ -858,7 +914,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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,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)]]
```
#### 6.2.4 小于等于
#### 7.2.4 小于等于
```rustscript
运算符
<=
......@@ -883,7 +939,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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,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)]]
```
#### 6.2.5 大于
#### 7.2.5 大于
```rustscript
运算符
>
......@@ -908,7 +964,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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(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)]]
```
#### 6.2.6 大于等于
#### 7.2.6 大于等于
```rustscript
运算符
>=
......@@ -934,8 +990,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 [[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)]]
```
### 6.3 逻辑运算符
#### 6.3.1 逻辑与
### 7.3 逻辑运算符
#### 7.3.1 逻辑与
```rustscript
运算符
&&
......@@ -960,7 +1016,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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,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)]]
```
#### 6.3.2 逻辑或
#### 7.3.2 逻辑或
```rustscript
运算符
||
......@@ -985,7 +1041,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 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,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)]]
```
#### 6.3.3 逻辑非
#### 7.3.3 逻辑非
```rustscript
运算符
~~
......@@ -1004,8 +1060,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
pq = find(bus_type == PQ || ~~bus_gen_status); // 组合逻辑运算
```
### 6.4 位运算符
#### 6.4.1 位与
### 7.4 位运算符
#### 7.4.1 位与
```rustscript
运算符
&
......@@ -1022,7 +1078,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)&c(4, 5)
结果 c(4,0)
```
#### 6.4.2 位或
#### 7.4.2 位或
```rustscript
运算符
|
......@@ -1039,7 +1095,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)|c(4, 5)
结果 c(6,0)
```
#### 6.4.3 位异或
#### 7.4.3 位异或
```rustscript
运算符
^^
......@@ -1056,7 +1112,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)^^c(4, 5)
结果 c(2,0)
```
#### 6.4.4 位取反
#### 7.4.4 位取反
```rustscript
运算符
~
......@@ -1071,7 +1127,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 ~c(6, 8)
结果 c(-7,0)
```
#### 6.4.5 位左移
#### 7.4.5 位左移
```rustscript
运算符
<<
......@@ -1088,7 +1144,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)<<c(2, 5)
结果 c(24,0)
```
#### 6.4.6 位右移
#### 7.4.6 位右移
```rustscript
运算符
>>
......@@ -1105,7 +1161,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)>>c(2, 5)
结果 c(1,0)
```
#### 6.4.7 位取值
#### 7.4.7 位取值
```rustscript
运算符
@
......@@ -1123,9 +1179,9 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 c(0,0)
```
## 7. 基本编程语句
## 8. 基本编程语句
### 7.1 条件语句
### 8.1 条件语句
```rustscript
//if语句
if a ==1{
......@@ -1149,7 +1205,7 @@ if a == 0{
}
```
### 7.2 循环语句
### 8.2 循环语句
```rustscript
//for语句
for i in 0..10 {
......@@ -1157,9 +1213,9 @@ for i in 0..10 {
}
```
## 8. 函数定义
## 9. 函数定义
### 8.1 基本函数语法
### 9.1 基本函数语法
```rustscript
fn function_name(param1, param2, ...) {
// 函数体
......@@ -1174,7 +1230,7 @@ fn add(a, b) {
**重要限制:RustScript函数只能返回一个变量,不支持多返回值。**
### 8.2 函数示例
### 9.2 函数示例
```rustscript
fn make_y_bus(baseMVA, bus, branch) {
nb = size(bus, 0);
......@@ -1189,10 +1245,10 @@ fn make_y_bus(baseMVA, bus, branch) {
}
```
## 9. 内置函数
## 10. 内置函数
### 9.1 数学函数
### 9.1.1 根号函数
### 10.1 数学函数
### 10.1.1 根号函数
```rustscript
函数
sqrt
......@@ -1210,7 +1266,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
```
### 9.1.2 自然指数函数
### 10.1.2 自然指数函数
```rustscript
函数
exp
......@@ -1228,7 +1284,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 exp(sparse([0,0],[0,1],[1,2], 2, 2))
结果 [[2, 2, 0], [0, 0, e], [0, 1, e^2]]
```
### 9.1.3 自然对数函数
### 10.1.3 自然对数函数
```rustscript
函数
ln
......@@ -1246,7 +1302,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 ln(sparse([0,0],[0,1],[1,e], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1]]
```
### 9.1.4 常用对数函数
### 10.1.4 常用对数函数
```rustscript
函数
log10
......@@ -1264,7 +1320,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 log10(sparse([0,0],[0,1],[1,10], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1]]
```
### 9.1.5 正弦函数
### 10.1.5 正弦函数
```rustscript
函数
sin
......@@ -1282,7 +1338,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 sin(sparse([0,0],[0,1],[pi/6,pi/2], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.5], [0, 1, 1]]
```
### 9.1.6 余弦函数
### 10.1.6 余弦函数
```rustscript
函数
cos
......@@ -1300,7 +1356,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 cos(sparse([0,0],[0,1],[pi/3,pi/2], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.5], [0, 1, 0]]
```
### 9.1.7 正切函数
### 10.1.7 正切函数
```rustscript
函数
tan
......@@ -1318,7 +1374,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 tan(sparse([0,0],[0,1],[pi/4,0.75*pi], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -1]]
```
### 9.1.8 反正弦函数
### 10.1.8 反正弦函数
```rustscript
函数
asin
......@@ -1336,7 +1392,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 asin(sparse([0,0],[0,1],[0.5,1], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/6], [0, 1, pi/2]]
```
### 9.1.9 反余弦函数
### 10.1.9 反余弦函数
```rustscript
函数
acos
......@@ -1354,7 +1410,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 acos(sparse([0,0],[0,1],[0.5,0], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/3], [0, 1, pi/2]]
```
### 9.1.10 反正切函数
### 10.1.10 反正切函数
```rustscript
函数
atan
......@@ -1372,7 +1428,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 atan(sparse([0,0],[0,1],[1,-1], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/4], [0, 1, -pi/4]]
```
### 9.1.11 双曲正弦函数
### 10.1.11 双曲正弦函数
```rustscript
函数
sinh
......@@ -1390,7 +1446,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 sinh(sparse([0,0],[0,1],[1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 1.175201], [0, 1, -3.626860]]
```
### 9.1.12 双曲余弦函数
### 10.1.12 双曲余弦函数
```rustscript
函数
cosh
......@@ -1408,7 +1464,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 cosh(sparse([0,0],[0,1],[1,-0.5], 2, 2))
结果 [[2, 2, 0], [0, 0, 1.543081], [0, 1, 1.127626]]
```
### 9.1.13 双曲正切函数
### 10.1.13 双曲正切函数
```rustscript
函数
tanh
......@@ -1426,7 +1482,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 tanh(sparse([0,0],[0,1],[1,ln(3)], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.761594], [0, 1, 0.8]]
```
### 9.1.14 双曲反正弦函数
### 10.1.14 双曲反正弦函数
```rustscript
函数
asinh
......@@ -1444,7 +1500,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 asinh(sparse([0,0],[0,1],[1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.881374], [0, 1, -1.443635]]
```
### 9.1.15 双曲反余弦函数
### 10.1.15 双曲反余弦函数
```rustscript
函数
acosh
......@@ -1462,7 +1518,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 acosh(sparse([0,0],[0,1],[2,cosh(3)], 2, 2))
结果 [[2, 2, 0], [0, 0, 1.316958], [0, 1, 3]]
```
### 9.1.16 双曲反正切函数
### 10.1.16 双曲反正切函数
```rustscript
函数
atanh
......@@ -1480,7 +1536,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 atanh(sparse([0,0],[0,1],[0.5,-2/3], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.549306], [0, 1, -0.804719]]
```
### 9.1.17 绝对值函数
### 10.1.17 绝对值函数
```rustscript
函数
abs
......@@ -1495,7 +1551,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 abs(sparse([0,0],[0,1],[-1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, 2]]
```
### 9.1.18 符号函数
### 10.1.18 符号函数
```rustscript
函数
signum
......@@ -1513,7 +1569,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 signum(sparse([0,0],[0,1],[-2,3], 2, 2))
结果 [[2, 2, 0], [0, 0, -1], [0, 1, 1]]
```
### 9.1.19 向下取整函数
### 10.1.19 向下取整函数
```rustscript
函数
floor
......@@ -1531,7 +1587,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 floor(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, -3]]
```
### 9.1.20 向上取整函数
### 10.1.20 向上取整函数
```rustscript
函数
ceil
......@@ -1549,7 +1605,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 ceil(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
```
### 9.1.21 四舍五入函数
### 10.1.21 四舍五入函数
```rustscript
函数
round
......@@ -1567,7 +1623,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 round(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
```
### 9.1.22 度转弧度函数
### 10.1.22 度转弧度函数
```rustscript
函数
deg2rad
......@@ -1585,7 +1641,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 deg2rad(sparse([0,0], [0,1], [30,45], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/6], [0, 1, pi/4]]
```
### 9.1.23 弧度转度函数
### 10.1.23 弧度转度函数
```rustscript
函数
rad2deg
......@@ -1603,7 +1659,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 rad2deg(sparse([0,0], [0,1], [pi/2,pi], 2, 2))
结果 [[2, 2, 0], [0, 0, 90], [0, 1, 180]]
```
### 9.1.24 复数取实部函数
### 10.1.24 复数取实部函数
```rustscript
函数
real
......@@ -1618,7 +1674,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 real(sparse([c(0,0),c(0,0)],[c(0,0),c(1,0)],[c(1,2),c(3,4)], c(2,0), c(2,0)))
结果 [[c(2,0), c(2,0), c(0,0)], [c(0,0), c(0,0), c(1,0)], [c(0,0), c(1,0), c(3,0)]]
```
### 9.1.25 复数取虚部函数
### 10.1.25 复数取虚部函数
```rustscript
函数
imag
......@@ -1633,7 +1689,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 imag(sparse([c(0,0),c(0,0)],[c(0,0),c(1,0)],[c(1,2),c(3,4)], c(2,0), c(2,0)))
结果 [[c(2,0), c(2,0), c(0,0)], [c(0,0), c(0,0), c(2,0)], [c(0,0), c(1,0), c(4,0)]]
```
### 9.1.26 共轭复数函数
### 10.1.26 共轭复数函数
```rustscript
函数
conj
......@@ -1648,7 +1704,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 conj(sparse([c(0,0),c(0,0)],[c(0,0),c(1,0)],[c(1,2),c(3,4)], c(2,0), c(2,0)))
结果 [[c(2,0), c(2,0), c(0,0)], [c(0,0), c(0,0), c(1,-2)], [c(0,0), c(1,0), c(3,-4)]]
```
### 9.1.27 复数模函数
### 10.1.27 复数模函数
```rustscript
函数
abs
......@@ -1663,7 +1719,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 abs(sparse([c(0,0),c(0,0)],[c(0,0),c(1,0)],[c(3,4),c(5,12)], c(2,0), c(2,0)))
结果 [[c(2,0), c(2,0), c(0,0)], [c(0,0), c(0,0), c(5,0)], [c(0,0), c(1,0), c(13,0)]]
```
### 9.1.28 复数辐角函数
### 10.1.28 复数辐角函数
```rustscript
函数
arg
......@@ -1679,9 +1735,9 @@ fn make_y_bus(baseMVA, bus, branch) {
结果 [[c(2,0), c(2,0), c(0,0)], [c(0,0), c(0,0), c(pi/6,0)], [c(0,0), c(1,0), c(pi/4,0)]]
```
### 9.2 矩阵函数
### 9.2.1 线性代数
### 9.2.1.1 行列式
### 10.2 矩阵函数
### 10.2.1 线性代数
### 10.2.1.1 行列式
```rustscript
函数
det
......@@ -1696,7 +1752,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 det([[c(1,2),c(3,4)],[c(5,6),c(7,8)]])
结果 c(0,-16)
```
### 9.2.1.2 逆矩阵
### 10.2.1.2 逆矩阵
```rustscript
运算符
^(-1)
......@@ -1708,7 +1764,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 [[1,2],[3,4]]^(-1)
结果 [[-2, 1], [1.5, -0.5]]
```
### 9.2.1.3 矩阵的秩
### 10.2.1.3 矩阵的秩
```rustscript
运算符
rank
......@@ -1720,7 +1776,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 rank([[1,2,3],[4,5,6]])
结果 2
```
### 9.2.1.4 矩阵的迹
### 10.2.1.4 矩阵的迹
```rustscript
运算符
trace
......@@ -1735,7 +1791,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 trace([[c(1,1), c(2,2), c(3,3)],[c(4,4), c(5,5) ,c(6,6)],[c(7,7), c(8,8), c(9,9)])
结果 c(15,15)
```
### 9.2.1.5 特征值
### 10.2.1.5 特征值
```rustscript
运算符
eig
......@@ -1758,7 +1814,7 @@ fn make_y_bus(baseMVA, bus, branch) {
结果 [[c(2, 1.732051), c(0.866025, 0), c(0.866025, 0)],
[c(2, -1.732051), c(0, -0.5), c(0, 0.5)]]
```
### 9.2.1.6 奇异值
### 10.2.1.6 奇异值
```rustscript
运算符
svd
......@@ -1770,7 +1826,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入
结果
```
### 9.2.1.7 1范数
### 10.2.1.7 1范数
```rustscript
函数
norm_l1
......@@ -1791,7 +1847,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 norm_l1(sparse([0,0,1,1], [0,1,0,1], [1,-2,3,-4], 2, 2))
结果 10
```
### 9.2.1.8 max范数
### 10.2.1.8 max范数
```rustscript
函数
norm_l1
......@@ -1812,7 +1868,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 norm_max(sparse([0,0,1,1], [0,1,0,1], [1,-2,3,-4], 2, 2))
结果 4
```
### 9.2.1.9 2范数
### 10.2.1.9 2范数
```rustscript
函数
norm_l2
......@@ -1833,7 +1889,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 norm_l2(sparse([0,0,1], [0,1,0], [1,2,-2], 2, 2))
结果 3
```
### 9.2.1.10 线性方程组求解
### 10.2.1.10 线性方程组求解
```rustscript
函数
linsolve
......@@ -1853,7 +1909,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 linsolve(sparse([0,0,1,1], [0,1,0,1], [2,1,1,-3], 2, 2), [[5], [-1]])
结果 [[2], [1]]
```
### 9.2.1.11 线性方程组系数矩阵转置求解
### 10.2.1.11 线性方程组系数矩阵转置求解
```rustscript
函数
linsolve_t
......@@ -1873,12 +1929,12 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 linsolve_t([[c(-12, 42), c(-20, 98)], [c(-16, 62), c(-24, 150)]], [[c(-548, 232)], [c(-1236, 664)]])
结果 [[c(1,2)], [c(5,6)]]
```
### 9.2.1.12
### 10.2.1.12
```rustscript
qr(A), chol(A)cond(A)
```
### 9.2.2 矩阵操作
### 9.2.2.1 转置
### 10.2.2 矩阵操作
### 10.2.2.1 转置
```rustscript
函数
transpose
......@@ -1896,7 +1952,7 @@ qr(A), chol(A)cond(A)
输入 transpose(sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2))
结果 [[2, 3, 0], [1, 0, 2], [0, 1, 3], [1, 2, 6]]
```
### 9.2.2.2 共轭转置
### 10.2.2.2 共轭转置
```rustscript
函数
ctranspose
......@@ -1911,7 +1967,7 @@ qr(A), chol(A)cond(A)
输入 ctranspose(sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2))
结果 [[2, 3, 0], [1, 0, -2], [0, 1, -3], [1, 2, -6]]
```
### 9.2.2.3 对角矩阵
### 10.2.2.3 对角矩阵
```rustscript
运算符
diag
......@@ -1929,15 +1985,15 @@ qr(A), chol(A)cond(A)
输入 diag(sparse([0, 1, 2], [1, 1, 2], [2, 3, 6], 3, 3))
结果 [[3, 3, 0], [1, 1, 3], [2, 2, 6]]
```
### 9.2.2.4
### 10.2.2.4
```rustscript
triu(A), tril(A)
reshape(A, m, n), repmat(A, m, n)
```
### 9.3 张量操作函数
#### 9.3.1 形状和尺寸
#### 9.3.1.1 获取指定维度大小
### 10.3 张量操作函数
#### 10.3.1 形状和尺寸
#### 10.3.1.1 获取指定维度大小
```rustscript
函数
size
......@@ -1965,7 +2021,7 @@ reshape(A, m, n), repmat(A, m, n)
输入 size([[1], [2], [3]], 1)
结果 1
```
#### 9.3.1.2 获取元素总数
#### 10.3.1.2 获取元素总数
```rustscript
函数
length
......@@ -1983,7 +2039,7 @@ reshape(A, m, n), repmat(A, m, n)
输入 length(sparse([0,0], [0,1], [1,-2], 2, 2))
结果 2
```
#### 9.3.1.3 获取维度数
#### 10.3.1.3 获取维度数
```rustscript
函数
ndim
......@@ -2001,13 +2057,13 @@ reshape(A, m, n), repmat(A, m, n)
输入 ndim([[1], [2], [3]])
结果 2
```
#### 9.3.1.4 元素个数
#### 10.3.1.4 元素个数
```rustscript
numel(tensor) // 元素个数
```
#### 9.3.2 张量切片和操作
#### 9.3.2.1 张量切片操作
#### 10.3.2 张量切片和操作
#### 10.3.2.1 张量切片操作
```rustscript
函数
slice
......@@ -2049,7 +2105,7 @@ numel(tensor) // 元素个数
voltage = slice(bus, [0], [VM-1, VM]); // 所有行,VM列(二维张量)
angle = slice(bus, [0], VA-1); // 所有行,VA列(一维张量)
```
#### 9.3.2.2 设置张量元素值
#### 10.3.2.2 设置张量元素值
```rustscript
函数
set
......@@ -2072,7 +2128,7 @@ numel(tensor) // 元素个数
输入 set(sparse([0,0],[0,1],[1,2], 2, 2), [1, 3], [3, 4])
结果 [[2, 2, 0], [0, 0, 1], [0, 1, 3], [1, 1, 4]]
```
#### 9.3.2.3 张量元素累加赋值 (相当于 +=)
#### 10.3.2.3 张量元素累加赋值 (相当于 +=)
```rustscript
函数
set2
......@@ -2096,8 +2152,8 @@ numel(tensor) // 元素个数
结果 [[2, 2, 0], [0, 0, 1], [0, 1, 5], [1, 1, 4]]
```
#### 9.3.3 张量拼接
#### 9.3.3.1 横向拼接张量
#### 10.3.3 张量拼接
#### 10.3.3.1 横向拼接张量
```rustscript
函数
horzcat
......@@ -2116,7 +2172,7 @@ numel(tensor) // 元素个数
结果 [[c(1.1, -1.1), c(2.2, -2.2), c(3.3, -3.3), c(7, -7), c(8, -8)],
[c(4.4, -4.4), c(5.5, -5.5), c(6.6, -6.6), c(9, -9), c(10, -10)]]
```
#### 9.3.3.2 纵向拼接张量
#### 10.3.3.2 纵向拼接张量
```rustscript
函数
vertcat
......@@ -2136,18 +2192,18 @@ numel(tensor) // 元素个数
[c(7, -7), c(8, -8), c(9, -9)], [c(10, -10), c(11, -11), c(12, -12)]]
```
#### 9.3.4 序列生成
#### 9.3.4.1 生成序列 [start, start+1, ..., end-1] (前闭后开)
#### 10.3.4 序列生成
#### 10.3.4.1 生成序列 [start, start+1, ..., end-1] (前闭后开)
```rustscript
range(start, end)
```
#### 9.3.4.2 在start和end间生成num个等间距点
#### 10.3.4.2 在start和end间生成num个等间距点
```rustscript
linspace(start, end, num)
```
#### 9.3.5 统计函数
#### 9.3.5.1 按维度求和
#### 10.3.5 统计函数
#### 10.3.5.1 按维度求和
```rustscript
函数
sum
......@@ -2179,7 +2235,7 @@ linspace(start, end, num)
输入 sum(sparse([0,0,1,1],[0,1,0,1],[1,2,3,4], 2, 2), 0)
结果 [3, 7]
```
#### 9.3.5.2 所有元素求和
#### 10.3.5.2 所有元素求和
```rustscript
函数
sum_all
......@@ -2197,7 +2253,7 @@ linspace(start, end, num)
输入 sum_all(sparse([0,0],[0,1],[1,2], 2, 2))
结果 3
```
#### 9.3.5.3 平均值
#### 10.3.5.3 平均值
```rustscript
函数
mean
......@@ -2215,15 +2271,15 @@ linspace(start, end, num)
输入 mean(sparse([0,0],[0,1],[1,2], 2, 2))
结果 1.5
```
#### 9.3.5.4 标准差
#### 10.3.5.4 标准差
```rustscript
std(tensor)
```
#### 9.3.5.5 方差
#### 10.3.5.5 方差
```rustscript
var(tensor)
```
#### 9.3.5.6 最大值
#### 10.3.5.6 最大值
```rustscript
函数
max
......@@ -2246,7 +2302,7 @@ var(tensor)
输入 max(sparse([0,0,1,1],[0,1,0,1],[1,2,3,4], 2, 2))
结果 4
```
#### 9.3.5.7 最小值
#### 10.3.5.7 最小值
```rustscript
函数
min
......@@ -2269,14 +2325,14 @@ var(tensor)
输入 min(sparse([0,0,1,1],[0,1,0,1],[1,2,3,4], 2, 2))
结果 1
```
#### 9.3.5.8 中位数
#### 10.3.5.8 中位数
```rustscript
median(tensor)
//其中,max()和min()可以如下用法:max(a, [0],1),min(a, [0],1),参数和slice函数的定义相同
```
#### 9.3.6 查找函数
#### 9.3.6.1 查找非零元素
#### 10.3.6 查找函数
#### 10.3.6.1 查找非零元素
```rustscript
函数
find
......@@ -2294,7 +2350,7 @@ median(tensor)
输入 find(sparse([0,0],[0,1],[1,-2], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
```
#### 9.3.6.2 查找最接近指定值的元素
#### 10.3.6.2 查找最接近指定值的元素
```rustscript
函数
find_nearest
......@@ -2313,7 +2369,7 @@ median(tensor)
输入 find_nearest(sparse([0,0],[0,1],[1,-2], 2, 2), -1)
结果 -2
```
#### 9.3.6.3 查找最接近指定值的元素位置
#### 10.3.6.3 查找最接近指定值的元素位置
```rustscript
函数
find_nearest_pos
......@@ -2333,7 +2389,7 @@ median(tensor)
输入 find_nearest_pos(sparse([0,0],[0,1],[1,-2], 2, 2), -1)
结果 [0, 1]
```
#### 9.3.6.4 检测指定维度是否存在非零元素
#### 10.3.6.4 检测指定维度是否存在非零元素
```rustscript
函数
any
......@@ -2361,7 +2417,7 @@ median(tensor)
输入 any(sparse([0, 1, 2], [1, 0, 1], [2, 3, 6], 3, 3))
结果 [[3, 1, 0], [0, 0, 1], [1, 0, 1], [2, 0, 1]]
```
#### 9.3.6.5 检测张量是否为空
#### 10.3.6.5 检测张量是否为空
```rustscript
函数
is_empty
......@@ -2379,7 +2435,7 @@ median(tensor)
输入 is_empty(sparse([],[],[], 2, 2))
结果 1
```
#### 9.3.6.6 检测是否无穷数
#### 10.3.6.6 检测是否无穷数
```rustscript
函数
is_inf
......@@ -2397,13 +2453,13 @@ median(tensor)
输入 is_inf(sparse([0,0,1], [0,1,0], [0,INF,NEG_INF], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1], [1, 0, 1]]
```
#### 9.3.6.7 检测所有元素是否非零
#### 10.3.6.7 检测所有元素是否非零
```rustscript
all(tensor)
```
#### 9.3.7 获取多个元素
#### 9.3.7.1 根据索引获取多个元素(可不连续)
#### 10.3.7 获取多个元素
#### 10.3.7.1 根据索引获取多个元素(可不连续)
```rustscript
函数
get_multi
......@@ -2420,9 +2476,9 @@ all(tensor)
结果 [c(3, 4), c(5, 6)]
```
### 9.4 稀疏矩阵
### 9.4.1 创建稀疏矩阵
### 9.4.1.1 由三元组创建稀疏矩阵
### 10.4 稀疏矩阵
### 10.4.1 创建稀疏矩阵
### 10.4.1.1 由三元组创建稀疏矩阵
```rustscript
函数
sparse
......@@ -2439,8 +2495,8 @@ all(tensor)
输入 sparse([0, 1, 2], [1, 0, 1], [2, 3, 6], 3, 2)
结果 [[3, 2, 0], [0, 1, 2], [1, 0, 3], [2, 1, 6]]
```
### 9.4.2 稀疏矩阵操作
### 9.4.2.1 转为稠密矩阵
### 10.4.2 稀疏矩阵操作
### 10.4.2.1 转为稠密矩阵
```rustscript
函数
full
......@@ -2452,16 +2508,16 @@ all(tensor)
输入 full(sparse([0, 1, 1], [1, 0, 2], 2, 3))
结果 [[0, 2, 0], [4, 0, 6]]
```
#### 9.4.2.2 非零元素个数
#### 10.4.2.2 非零元素个数
```rustscript
nnz_count = nnz(sparse_mat);
```
#### 9.4.2.3 显示稀疏模式
#### 10.4.2.3 显示稀疏模式
```rustscript
spy(sparse_mat);
```
### 9.5 张量操作详细示例
### 10.5 张量操作详细示例
```rustscript
// 实际使用示例(来自make_y_bus函数)
nb = size(bus, 0); // 获取母线数量
......@@ -2486,8 +2542,8 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
vertcat(Yff,Yft,Ytf,Ytt), nb, nb);
```
## 10. 方程组和优化模型求解
### 10.1 线性方程组求解
## 11. 方程组和优化模型求解
### 11.1 线性方程组求解
```rustscript
函数
sp_linsolve
......@@ -2510,7 +2566,7 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
结果 [-28.79, 4, 17.89, 0]
```
### 10.2 混合整数线性规划
### 11.2 混合整数线性规划
```rustscript
函数
intlinprog
......@@ -2532,7 +2588,7 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
结果 [1, 0.2, 0, 1, 1, 16.6, 0]
```
### 10.3 非线性规划
### 11.3 非线性规划
```rustscript
函数
fmincon
......@@ -2559,9 +2615,9 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
结果 [0.9999999900103392, 4.742999643578124, 3.8211499789476977, 1.379408293213419, 17.014017140221718, 0]
```
## 11. 数据结构示例
## 12. 数据结构示例
### 11.1 电力系统数据(基于 case14)
### 12.1 电力系统数据(基于 case14)
```rustscript
// 系统基准功率
baseMVA = 100;
......@@ -2589,9 +2645,9 @@ branch = [
];
```
## 12. 模块系统
## 13. 模块系统
### 12.1 模块导入
### 13.1 模块导入
```rustscript
// 导入整个模块
import power_flow;
......@@ -2603,7 +2659,7 @@ import {newton_pf, fast_decoupled_pf} from power_flow;
import newton_pf as newton from power_flow;
```
### 12.2 模块定义
### 13.2 模块定义
```rustscript
// 模块文件: power_flow.rs
export fn newton_pf(baseMVA, bus, gen, branch) {
......@@ -2616,9 +2672,9 @@ export fn fast_decoupled_pf(baseMVA, bus, gen, branch) {
```
## 13. 与MATLAB的对比
## 14. 与MATLAB的对比
### 13.1 主要差异
### 14.1 主要差异
| 特性 | MATLAB | RustScript | 说明 |
|------|---------------------|-----------------------|------|
......@@ -2631,7 +2687,7 @@ export fn fast_decoupled_pf(baseMVA, bus, gen, branch) {
| 逻辑运算 | `&`, `\|`, `~` | `&&`, `\|\|`, `~~` | 逻辑运算符不同 |
| 结构体 | `struct` | 无结构体,使用张量和变量组织 | RustScript没有结构体概念 |
### 13.2 索引转换详解
### 14.2 索引转换详解
**最重要的差异:MATLAB使用1基索引,RustScript使用0基索引**
......@@ -2651,7 +2707,7 @@ slice(bus, [0], [i-1,i]) // 第i列所有行(需要减1)
range(0, n) // 生成 [0, 1, 2, ..., n-1] (前闭后开)
```
### 13.3 转换示例对比
### 14.3 转换示例对比
**MATLAB到RustScript的典型转换:**
......@@ -2688,7 +2744,7 @@ fn make_y_bus(baseMVA, bus, branch) {
}
```
### 13.4 转换器的索引处理策略
### 14.4 转换器的索引处理策略
在MATLAB到RustScript转换过程中,转换器需要特别处理索引:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论