Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
sparrowzz
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
sgool
sparrowzz
Commits
9cf68ff4
Commit
9cf68ff4
authored
Dec 16, 2025
by
xuchengsi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
补充张量生成方法说明
parent
bfe07d45
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
224 行增加
和
168 行删除
+224
-168
rustscript/RustScript手册.md
+224
-168
没有找到文件。
rustscript/RustScript手册.md
查看文件 @
9cf68ff4
# Rus
tScript 语言规范
# Rus
tScript 语言规范
...
@@ -163,9 +163,65 @@ PD = 2;
...
@@ -163,9 +163,65 @@ PD = 2;
QD = 3;
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
```
rustscript
函数
函数
get
get
...
@@ -188,7 +244,7 @@ QD = 3;
...
@@ -188,7 +244,7 @@ QD = 3;
结果 2
结果 2
```
```
###
5
.2 张量切片
###
6
.2 张量切片
```
rustscript
```
rustscript
函数
函数
slice
slice
...
@@ -232,7 +288,7 @@ QD = 3;
...
@@ -232,7 +288,7 @@ QD = 3;
angle = slice(bus, [0], VA-1); // 所有行,VA列(一维张量)
angle = slice(bus, [0], VA-1); // 所有行,VA列(一维张量)
```
```
###
5
.3 获取张量指定行列
###
6
.3 获取张量指定行列
```
rustscript
```
rustscript
函数
函数
select
select
...
@@ -257,7 +313,7 @@ QD = 3;
...
@@ -257,7 +313,7 @@ QD = 3;
结果 [[1,3]]
结果 [[1,3]]
```
```
###
5
.4 张量赋值操作
###
6
.4 张量赋值操作
```
rustscript
```
rustscript
函数
函数
assign
assign
...
@@ -315,8 +371,8 @@ QD = 3;
...
@@ -315,8 +371,8 @@ QD = 3;
assign(bus, new_angles, [0], VA-1); // 更新电压角度
assign(bus, new_angles, [0], VA-1); // 更新电压角度
```
```
###
5
.5 张量形状和维度
###
6
.5 张量形状和维度
####
5
.5.1 重要概念区分
####
6
.5.1 重要概念区分
```
rustscript
```
rustscript
a = [1, 2, 3]; // 一维张量, shape: [3]
a = [1, 2, 3]; // 一维张量, shape: [3]
b = [[1, 2, 3]]; // 行向量(二维张量), shape: [1, 3]
b = [[1, 2, 3]]; // 行向量(二维张量), shape: [1, 3]
...
@@ -327,7 +383,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -327,7 +383,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
- 行向量和列向量都属于二维张量,但形状不同
- 行向量和列向量都属于二维张量,但形状不同
- slice和assign函数的行为取决于参数格式和返回的张量维度
- slice和assign函数的行为取决于参数格式和返回的张量维度
```
```
####
5
.5.2 获取张量维数
####
6
.5.2 获取张量维数
```
rustscript
```
rustscript
函数
函数
ndim
ndim
...
@@ -345,7 +401,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -345,7 +401,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 ndim([[1], [2], [3]])
输入 ndim([[1], [2], [3]])
结果 2
结果 2
```
```
####
5
.5.3 获取指定维度大小
####
6
.5.3 获取指定维度大小
```
rustscript
```
rustscript
函数
函数
size
size
...
@@ -374,46 +430,46 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -374,46 +430,46 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 1
结果 1
```
```
##
6
. 运算符
##
7
. 运算符
###
6
.1 算术运算符
###
7
.1 算术运算符
####
6
.1.1 标量运算
####
7
.1.1 标量运算
#####
6
.1.1.1 加法
#####
7
.1.1.1 加法
```
rustscript
```
rustscript
运算符
运算符
+
+
语法
语法
a + b;
a + b;
```
```
#####
6
.1.1.2 减法
#####
7
.1.1.2 减法
```
rustscript
```
rustscript
运算符
运算符
-
-
语法
语法
a - b;
a - b;
```
```
#####
6
.1.1.3 乘法
#####
7
.1.1.3 乘法
```
rustscript
```
rustscript
运算符
运算符
*
*
语法
语法
a * b;
a * b;
```
```
#####
6
.1.1.4 除法
#####
7
.1.1.4 除法
```
rustscript
```
rustscript
运算符
运算符
/
/
语法
语法
a / b;
a / b;
```
```
#####
6
.1.1.5 幂运算
#####
7
.1.1.5 幂运算
```
rustscript
```
rustscript
运算符
运算符
^
^
语法
语法
a ^ b;
a ^ b;
```
```
####
6
.1.2 元素级运算(张量)
####
7
.1.2 元素级运算(张量)
#####
6
.1.2.1 元素级加法
#####
7
.1.2.1 元素级加法
```
rustscript
```
rustscript
运算符
运算符
+
+
...
@@ -438,7 +494,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,3]+sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[2,5],[5,3],[2,9]]
结果 [[2,5],[5,3],[2,9]]
```
```
#####
6
.1.2.2 元素级减法
#####
7
.1.2.2 元素级减法
```
rustscript
```
rustscript
运算符
运算符
-
-
...
@@ -463,7 +519,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,3]-sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[2,1],[-1,3],[2,3]]
结果 [[2,1],[-1,3],[2,3]]
```
```
#####
6
.1.2.3 元素级乘法
#####
7
.1.2.3 元素级乘法
```
rustscript
```
rustscript
运算符
运算符
.*
.*
...
@@ -488,7 +544,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 [2,3].*sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)
结果 [[0,6],[6,0],[0,18]]
结果 [[0,6],[6,0],[0,18]]
```
```
#####
6
.1.2.4 元素级除法
#####
7
.1.2.4 元素级除法
```
rustscript
```
rustscript
运算符
运算符
./
./
...
@@ -513,7 +569,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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]
输入 sparse([0,1,2],[1,0,1],[2,3,6], 3, 2)./[2,3]
结果 [[0,2/3],[1.5,0],[0,2]]
结果 [[0,2/3],[1.5,0],[0,2]]
```
```
#####
6
.1.2.5 元素级幂运算
#####
7
.1.2.5 元素级幂运算
```
rustscript
```
rustscript
运算符
运算符
.^
.^
...
@@ -532,7 +588,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -532,7 +588,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2,3,6], 3, 2).^3
输入 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]]
结果 [[3, 2, 0], [0, 1, 8], [1, 0, 27], [2, 1, 216]]
```
```
#####
6
.1.2.6 元素级模运算
#####
7
.1.2.6 元素级模运算
```
rustscript
```
rustscript
运算符
运算符
%
%
...
@@ -554,8 +610,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 [7,9]%sparse([0,0,1,1],[0,1,0,1],[2,3,4,6], 2, 2)
结果 [[1,0],[3,3]]
结果 [[1,0],[3,3]]
```
```
####
6
.1.3 矩阵运算
####
7
.1.3 矩阵运算
#####
6
.1.3.1 矩阵加法
#####
7
.1.3.1 矩阵加法
```
rustscript
```
rustscript
运算符
运算符
+
+
...
@@ -579,7 +635,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 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]]
结果 [[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
```
rustscript
运算符
运算符
-
-
...
@@ -603,7 +659,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 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]]
结果 [[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
```
rustscript
运算符
运算符
*
*
...
@@ -623,7 +679,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -623,7 +679,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 2*sparse([1,2],[1,2],[2,3], 3, 3)
输入 2*sparse([1,2],[1,2],[2,3], 3, 3)
结果 [[3,3,0],[1,1,4],[2,2,6]]
结果 [[3,3,0],[1,1,4],[2,2,6]]
```
```
#####
6
.1.3.4 矩阵标量除法
#####
7
.1.3.4 矩阵标量除法
```
rustscript
```
rustscript
运算符
运算符
/
/
...
@@ -642,7 +698,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -642,7 +698,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([1,2],[1,2],[2,3], 3, 3)/2
输入 sparse([1,2],[1,2],[2,3], 3, 3)/2
结果 [[3,3,0],[1,1,1],[2,2,1.5]]
结果 [[3,3,0],[1,1,1],[2,2,1.5]]
```
```
#####
6
.1.3.5 矩阵乘法
#####
7
.1.3.5 矩阵乘法
```
rustscript
```
rustscript
运算符
运算符
*
*
...
@@ -666,7 +722,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 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]]
结果 [[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
```
rustscript
运算符
运算符
/
/
...
@@ -690,7 +746,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 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]]
结果 [[2, 2, 0], [0, 0, -5], [0, 1, 8], [1, 0, -11], [1, 1, 18]]
```
```
#####
6
.1.3.7 矩阵左除
#####
7
.1.3.7 矩阵左除
```
rustscript
```
rustscript
运算符
运算符
\
\
...
@@ -714,7 +770,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)
输入 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]]
结果 [[2, 1, 0], [0, 0, 2], [1, 0, 1]]
```
```
#####
6
.1.3.8 矩阵幂
#####
7
.1.3.8 矩阵幂
```
rustscript
```
rustscript
运算符
运算符
^
^
...
@@ -736,7 +792,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -736,7 +792,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2],[1,0,1],[2, 3, 6], 3, 3)^3
输入 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]]
结果 [[3, 3, 0], [0, 1, 12], [1, 0, 18], [2, 1, 36]]
```
```
#####
6
.1.3.9 转置
#####
7
.1.3.9 转置
```
rustscript
```
rustscript
运算符
运算符
'
'
...
@@ -754,7 +810,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -754,7 +810,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2)'
输入 sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2)'
结果 [[2, 3, 0], [1, 0, 2], [0, 1, 3], [1, 2, 6]]
结果 [[2, 3, 0], [1, 0, 2], [0, 1, 3], [1, 2, 6]]
```
```
#####
6
.1.3.10 逆矩阵
#####
7
.1.3.10 逆矩阵
```
rustscript
```
rustscript
运算符
运算符
^(-1)
^(-1)
...
@@ -766,7 +822,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -766,7 +822,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 [[1,2],[3,4]]^(-1)
输入 [[1,2],[3,4]]^(-1)
结果 [[-2, 1], [1.5, -0.5]]
结果 [[-2, 1], [1.5, -0.5]]
```
```
#####
6
.1.3.11 行列式
#####
7
.1.3.11 行列式
```
rustscript
```
rustscript
函数
函数
det
det
...
@@ -782,8 +838,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -782,8 +838,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 c(0,-16)
结果 c(0,-16)
```
```
###
6
.2 比较运算符
###
7
.2 比较运算符
####
6
.2.1 等于
####
7
.2.1 等于
```
rustscript
```
rustscript
运算符
运算符
==
==
...
@@ -808,7 +864,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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(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)]]
结果 [[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
```
rustscript
运算符
运算符
!=
!=
...
@@ -833,7 +889,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,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)]]
结果 [[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
```
rustscript
运算符
运算符
<
<
...
@@ -858,7 +914,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,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)]]
结果 [[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
```
rustscript
运算符
运算符
<=
<=
...
@@ -883,7 +939,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,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)]]
结果 [[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
```
rustscript
运算符
运算符
>
>
...
@@ -908,7 +964,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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(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)]]
结果 [[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
```
rustscript
运算符
运算符
>=
>=
...
@@ -934,8 +990,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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)]]
结果 [[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 逻辑运算符
###
7
.3 逻辑运算符
####
6
.3.1 逻辑与
####
7
.3.1 逻辑与
```
rustscript
```
rustscript
运算符
运算符
&&
&&
...
@@ -960,7 +1016,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,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)]]
结果 [[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
```
rustscript
运算符
运算符
||
||
...
@@ -985,7 +1041,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -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,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)]]
结果 [[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
```
rustscript
运算符
运算符
~~
~~
...
@@ -1004,8 +1060,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1004,8 +1060,8 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
pq = find(bus_type == PQ || ~~bus_gen_status); // 组合逻辑运算
pq = find(bus_type == PQ || ~~bus_gen_status); // 组合逻辑运算
```
```
###
6
.4 位运算符
###
7
.4 位运算符
####
6
.4.1 位与
####
7
.4.1 位与
```
rustscript
```
rustscript
运算符
运算符
&
&
...
@@ -1022,7 +1078,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1022,7 +1078,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)&c(4, 5)
输入 c(6, 8)&c(4, 5)
结果 c(4,0)
结果 c(4,0)
```
```
####
6
.4.2 位或
####
7
.4.2 位或
```
rustscript
```
rustscript
运算符
运算符
|
|
...
@@ -1039,7 +1095,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1039,7 +1095,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)|c(4, 5)
输入 c(6, 8)|c(4, 5)
结果 c(6,0)
结果 c(6,0)
```
```
####
6
.4.3 位异或
####
7
.4.3 位异或
```
rustscript
```
rustscript
运算符
运算符
^^
^^
...
@@ -1056,7 +1112,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1056,7 +1112,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)^^c(4, 5)
输入 c(6, 8)^^c(4, 5)
结果 c(2,0)
结果 c(2,0)
```
```
####
6
.4.4 位取反
####
7
.4.4 位取反
```
rustscript
```
rustscript
运算符
运算符
~
~
...
@@ -1071,7 +1127,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1071,7 +1127,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 ~c(6, 8)
输入 ~c(6, 8)
结果 c(-7,0)
结果 c(-7,0)
```
```
####
6
.4.5 位左移
####
7
.4.5 位左移
```
rustscript
```
rustscript
运算符
运算符
<<
<<
...
@@ -1088,7 +1144,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1088,7 +1144,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)<<c(2, 5)
输入 c(6, 8)<<c(2, 5)
结果 c(24,0)
结果 c(24,0)
```
```
####
6
.4.6 位右移
####
7
.4.6 位右移
```
rustscript
```
rustscript
运算符
运算符
>>
>>
...
@@ -1105,7 +1161,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1105,7 +1161,7 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
输入 c(6, 8)>>c(2, 5)
输入 c(6, 8)>>c(2, 5)
结果 c(1,0)
结果 c(1,0)
```
```
####
6
.4.7 位取值
####
7
.4.7 位取值
```
rustscript
```
rustscript
运算符
运算符
@
@
...
@@ -1123,9 +1179,9 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
...
@@ -1123,9 +1179,9 @@ c = [[1], [2], [3]]; // 列向量(二维张量), shape: [3, 1]
结果 c(0,0)
结果 c(0,0)
```
```
##
7
. 基本编程语句
##
8
. 基本编程语句
###
7
.1 条件语句
###
8
.1 条件语句
```
rustscript
```
rustscript
//if语句
//if语句
if a ==1{
if a ==1{
...
@@ -1149,7 +1205,7 @@ if a == 0{
...
@@ -1149,7 +1205,7 @@ if a == 0{
}
}
```
```
###
7
.2 循环语句
###
8
.2 循环语句
```
rustscript
```
rustscript
//for语句
//for语句
for i in 0..10 {
for i in 0..10 {
...
@@ -1157,9 +1213,9 @@ for i in 0..10 {
...
@@ -1157,9 +1213,9 @@ for i in 0..10 {
}
}
```
```
##
8
. 函数定义
##
9
. 函数定义
###
8
.1 基本函数语法
###
9
.1 基本函数语法
```
rustscript
```
rustscript
fn function_name(param1, param2, ...) {
fn function_name(param1, param2, ...) {
// 函数体
// 函数体
...
@@ -1174,7 +1230,7 @@ fn add(a, b) {
...
@@ -1174,7 +1230,7 @@ fn add(a, b) {
**重要限制:RustScript函数只能返回一个变量,不支持多返回值。**
**重要限制:RustScript函数只能返回一个变量,不支持多返回值。**
###
8
.2 函数示例
###
9
.2 函数示例
```
rustscript
```
rustscript
fn make_y_bus(baseMVA, bus, branch) {
fn make_y_bus(baseMVA, bus, branch) {
nb = size(bus, 0);
nb = size(bus, 0);
...
@@ -1189,10 +1245,10 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1189,10 +1245,10 @@ fn make_y_bus(baseMVA, bus, branch) {
}
}
```
```
##
9
. 内置函数
##
10
. 内置函数
###
9
.1 数学函数
###
10
.1 数学函数
###
9
.1.1 根号函数
###
10
.1.1 根号函数
```
rustscript
```
rustscript
函数
函数
sqrt
sqrt
...
@@ -1210,7 +1266,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1210,7 +1266,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[3, 2, 0], [0, 1, 2], [1, 0, 3], [2, 1, 6]]
```
```
###
9
.1.2 自然指数函数
###
10
.1.2 自然指数函数
```
rustscript
```
rustscript
函数
函数
exp
exp
...
@@ -1228,7 +1284,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1228,7 +1284,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, e], [0, 1, e^2]]
```
```
###
9
.1.3 自然对数函数
###
10
.1.3 自然对数函数
```
rustscript
```
rustscript
函数
函数
ln
ln
...
@@ -1246,7 +1302,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1246,7 +1302,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1]]
```
```
###
9
.1.4 常用对数函数
###
10
.1.4 常用对数函数
```
rustscript
```
rustscript
函数
函数
log10
log10
...
@@ -1264,7 +1320,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1264,7 +1320,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 0], [0, 1, 1]]
```
```
###
9
.1.5 正弦函数
###
10
.1.5 正弦函数
```
rustscript
```
rustscript
函数
函数
sin
sin
...
@@ -1282,7 +1338,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1282,7 +1338,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 0.5], [0, 1, 1]]
```
```
###
9
.1.6 余弦函数
###
10
.1.6 余弦函数
```
rustscript
```
rustscript
函数
函数
cos
cos
...
@@ -1300,7 +1356,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1300,7 +1356,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 cos(sparse([0,0],[0,1],[pi/3,pi/2], 2, 2))
输入 cos(sparse([0,0],[0,1],[pi/3,pi/2], 2, 2))
结果 [[2, 2, 0], [0, 0, 0.5], [0, 1, 0]]
结果 [[2, 2, 0], [0, 0, 0.5], [0, 1, 0]]
```
```
###
9
.1.7 正切函数
###
10
.1.7 正切函数
```
rustscript
```
rustscript
函数
函数
tan
tan
...
@@ -1318,7 +1374,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1318,7 +1374,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -1]]
```
```
###
9
.1.8 反正弦函数
###
10
.1.8 反正弦函数
```
rustscript
```
rustscript
函数
函数
asin
asin
...
@@ -1336,7 +1392,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1336,7 +1392,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, pi/6], [0, 1, pi/2]]
```
```
###
9
.1.9 反余弦函数
###
10
.1.9 反余弦函数
```
rustscript
```
rustscript
函数
函数
acos
acos
...
@@ -1354,7 +1410,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1354,7 +1410,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 acos(sparse([0,0],[0,1],[0.5,0], 2, 2))
输入 acos(sparse([0,0],[0,1],[0.5,0], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/3], [0, 1, pi/2]]
结果 [[2, 2, 0], [0, 0, pi/3], [0, 1, pi/2]]
```
```
###
9
.1.10 反正切函数
###
10
.1.10 反正切函数
```
rustscript
```
rustscript
函数
函数
atan
atan
...
@@ -1372,7 +1428,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1372,7 +1428,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, pi/4], [0, 1, -pi/4]]
```
```
###
9
.1.11 双曲正弦函数
###
10
.1.11 双曲正弦函数
```
rustscript
```
rustscript
函数
函数
sinh
sinh
...
@@ -1390,7 +1446,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1390,7 +1446,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 1.175201], [0, 1, -3.626860]]
```
```
###
9
.1.12 双曲余弦函数
###
10
.1.12 双曲余弦函数
```
rustscript
```
rustscript
函数
函数
cosh
cosh
...
@@ -1408,7 +1464,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1408,7 +1464,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 1.543081], [0, 1, 1.127626]]
```
```
###
9
.1.13 双曲正切函数
###
10
.1.13 双曲正切函数
```
rustscript
```
rustscript
函数
函数
tanh
tanh
...
@@ -1426,7 +1482,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1426,7 +1482,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 0.761594], [0, 1, 0.8]]
```
```
###
9
.1.14 双曲反正弦函数
###
10
.1.14 双曲反正弦函数
```
rustscript
```
rustscript
函数
函数
asinh
asinh
...
@@ -1444,7 +1500,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1444,7 +1500,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 0.881374], [0, 1, -1.443635]]
```
```
###
9
.1.15 双曲反余弦函数
###
10
.1.15 双曲反余弦函数
```
rustscript
```
rustscript
函数
函数
acosh
acosh
...
@@ -1462,7 +1518,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1462,7 +1518,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 1.316958], [0, 1, 3]]
```
```
###
9
.1.16 双曲反正切函数
###
10
.1.16 双曲反正切函数
```
rustscript
```
rustscript
函数
函数
atanh
atanh
...
@@ -1480,7 +1536,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1480,7 +1536,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 0.549306], [0, 1, -0.804719]]
```
```
###
9
.1.17 绝对值函数
###
10
.1.17 绝对值函数
```
rustscript
```
rustscript
函数
函数
abs
abs
...
@@ -1495,7 +1551,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1495,7 +1551,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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]]
结果 [[2, 2, 0], [0, 0, 1], [0, 1, 2]]
```
```
###
9
.1.18 符号函数
###
10
.1.18 符号函数
```
rustscript
```
rustscript
函数
函数
signum
signum
...
@@ -1513,7 +1569,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1513,7 +1569,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 signum(sparse([0,0],[0,1],[-2,3], 2, 2))
输入 signum(sparse([0,0],[0,1],[-2,3], 2, 2))
结果 [[2, 2, 0], [0, 0, -1], [0, 1, 1]]
结果 [[2, 2, 0], [0, 0, -1], [0, 1, 1]]
```
```
###
9
.1.19 向下取整函数
###
10
.1.19 向下取整函数
```
rustscript
```
rustscript
函数
函数
floor
floor
...
@@ -1531,7 +1587,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1531,7 +1587,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 floor(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
输入 floor(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
结果 [[2, 2, 0], [0, 0, 0], [0, 1, -3]]
结果 [[2, 2, 0], [0, 0, 0], [0, 1, -3]]
```
```
###
9
.1.20 向上取整函数
###
10
.1.20 向上取整函数
```
rustscript
```
rustscript
函数
函数
ceil
ceil
...
@@ -1549,7 +1605,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1549,7 +1605,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 ceil(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
输入 ceil(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
```
```
###
9
.1.21 四舍五入函数
###
10
.1.21 四舍五入函数
```
rustscript
```
rustscript
函数
函数
round
round
...
@@ -1567,7 +1623,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1567,7 +1623,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 round(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
输入 round(sparse([0,0],[0,1],[0.6,-2.3], 2, 2))
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
结果 [[2, 2, 0], [0, 0, 1], [0, 1, -2]]
```
```
###
9
.1.22 度转弧度函数
###
10
.1.22 度转弧度函数
```
rustscript
```
rustscript
函数
函数
deg2rad
deg2rad
...
@@ -1585,7 +1641,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1585,7 +1641,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 deg2rad(sparse([0,0], [0,1], [30,45], 2, 2))
输入 deg2rad(sparse([0,0], [0,1], [30,45], 2, 2))
结果 [[2, 2, 0], [0, 0, pi/6], [0, 1, pi/4]]
结果 [[2, 2, 0], [0, 0, pi/6], [0, 1, pi/4]]
```
```
###
9
.1.23 弧度转度函数
###
10
.1.23 弧度转度函数
```
rustscript
```
rustscript
函数
函数
rad2deg
rad2deg
...
@@ -1603,7 +1659,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1603,7 +1659,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 rad2deg(sparse([0,0], [0,1], [pi/2,pi], 2, 2))
输入 rad2deg(sparse([0,0], [0,1], [pi/2,pi], 2, 2))
结果 [[2, 2, 0], [0, 0, 90], [0, 1, 180]]
结果 [[2, 2, 0], [0, 0, 90], [0, 1, 180]]
```
```
###
9
.1.24 复数取实部函数
###
10
.1.24 复数取实部函数
```
rustscript
```
rustscript
函数
函数
real
real
...
@@ -1618,7 +1674,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)))
输入 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)]]
结果 [[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
```
rustscript
函数
函数
imag
imag
...
@@ -1633,7 +1689,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)))
输入 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)]]
结果 [[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
```
rustscript
函数
函数
conj
conj
...
@@ -1648,7 +1704,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)))
输入 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)]]
结果 [[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
```
rustscript
函数
函数
abs
abs
...
@@ -1663,7 +1719,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)))
输入 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)]]
结果 [[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
```
rustscript
函数
函数
arg
arg
...
@@ -1679,9 +1735,9 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)]]
结果 [[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 矩阵函数
###
10
.2 矩阵函数
###
9
.2.1 线性代数
###
10
.2.1 线性代数
###
9
.2.1.1 行列式
###
10
.2.1.1 行列式
```
rustscript
```
rustscript
函数
函数
det
det
...
@@ -1696,7 +1752,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1696,7 +1752,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 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)
结果 c(0,-16)
```
```
###
9
.2.1.2 逆矩阵
###
10
.2.1.2 逆矩阵
```
rustscript
```
rustscript
运算符
运算符
^(-1)
^(-1)
...
@@ -1708,7 +1764,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1708,7 +1764,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 [[1,2],[3,4]]^(-1)
输入 [[1,2],[3,4]]^(-1)
结果 [[-2, 1], [1.5, -0.5]]
结果 [[-2, 1], [1.5, -0.5]]
```
```
###
9
.2.1.3 矩阵的秩
###
10
.2.1.3 矩阵的秩
```
rustscript
```
rustscript
运算符
运算符
rank
rank
...
@@ -1720,7 +1776,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1720,7 +1776,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入 rank([[1,2,3],[4,5,6]])
输入 rank([[1,2,3],[4,5,6]])
结果 2
结果 2
```
```
###
9
.2.1.4 矩阵的迹
###
10
.2.1.4 矩阵的迹
```
rustscript
```
rustscript
运算符
运算符
trace
trace
...
@@ -1735,7 +1791,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)])
输入 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)
结果 c(15,15)
```
```
###
9
.2.1.5 特征值
###
10
.2.1.5 特征值
```
rustscript
```
rustscript
运算符
运算符
eig
eig
...
@@ -1758,7 +1814,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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.866025, 0), c(0.866025, 0)],
[c(2, -1.732051), c(0, -0.5), c(0, 0.5)]]
[c(2, -1.732051), c(0, -0.5), c(0, 0.5)]]
```
```
###
9
.2.1.6 奇异值
###
10
.2.1.6 奇异值
```
rustscript
```
rustscript
运算符
运算符
svd
svd
...
@@ -1770,7 +1826,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -1770,7 +1826,7 @@ fn make_y_bus(baseMVA, bus, branch) {
输入
输入
结果
结果
```
```
###
9
.2.1.7 1范数
###
10
.2.1.7 1范数
```
rustscript
```
rustscript
函数
函数
norm_l1
norm_l1
...
@@ -1791,7 +1847,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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))
输入 norm_l1(sparse([0,0,1,1], [0,1,0,1], [1,-2,3,-4], 2, 2))
结果 10
结果 10
```
```
###
9
.2.1.8 max范数
###
10
.2.1.8 max范数
```
rustscript
```
rustscript
函数
函数
norm_l1
norm_l1
...
@@ -1812,7 +1868,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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))
输入 norm_max(sparse([0,0,1,1], [0,1,0,1], [1,-2,3,-4], 2, 2))
结果 4
结果 4
```
```
###
9
.2.1.9 2范数
###
10
.2.1.9 2范数
```
rustscript
```
rustscript
函数
函数
norm_l2
norm_l2
...
@@ -1833,7 +1889,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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))
输入 norm_l2(sparse([0,0,1], [0,1,0], [1,2,-2], 2, 2))
结果 3
结果 3
```
```
###
9
.2.1.10 线性方程组求解
###
10
.2.1.10 线性方程组求解
```
rustscript
```
rustscript
函数
函数
linsolve
linsolve
...
@@ -1853,7 +1909,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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]])
输入 linsolve(sparse([0,0,1,1], [0,1,0,1], [2,1,1,-3], 2, 2), [[5], [-1]])
结果 [[2], [1]]
结果 [[2], [1]]
```
```
###
9
.2.1.11 线性方程组系数矩阵转置求解
###
10
.2.1.11 线性方程组系数矩阵转置求解
```
rustscript
```
rustscript
函数
函数
linsolve_t
linsolve_t
...
@@ -1873,12 +1929,12 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -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)]])
输入 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)]]
结果 [[c(1,2)], [c(5,6)]]
```
```
###
9
.2.1.12
###
10
.2.1.12
```
rustscript
```
rustscript
qr(A), chol(A)cond(A)
qr(A), chol(A)cond(A)
```
```
###
9
.2.2 矩阵操作
###
10
.2.2 矩阵操作
###
9
.2.2.1 转置
###
10
.2.2.1 转置
```
rustscript
```
rustscript
函数
函数
transpose
transpose
...
@@ -1896,7 +1952,7 @@ qr(A), chol(A)cond(A)
...
@@ -1896,7 +1952,7 @@ qr(A), chol(A)cond(A)
输入 transpose(sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2))
输入 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]]
结果 [[2, 3, 0], [1, 0, 2], [0, 1, 3], [1, 2, 6]]
```
```
###
9
.2.2.2 共轭转置
###
10
.2.2.2 共轭转置
```
rustscript
```
rustscript
函数
函数
ctranspose
ctranspose
...
@@ -1911,7 +1967,7 @@ qr(A), chol(A)cond(A)
...
@@ -1911,7 +1967,7 @@ qr(A), chol(A)cond(A)
输入 ctranspose(sparse([0,1,2], [1,0,1], [2, 3, 6], 3, 2))
输入 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]]
结果 [[2, 3, 0], [1, 0, -2], [0, 1, -3], [1, 2, -6]]
```
```
###
9
.2.2.3 对角矩阵
###
10
.2.2.3 对角矩阵
```
rustscript
```
rustscript
运算符
运算符
diag
diag
...
@@ -1929,15 +1985,15 @@ qr(A), chol(A)cond(A)
...
@@ -1929,15 +1985,15 @@ qr(A), chol(A)cond(A)
输入 diag(sparse([0, 1, 2], [1, 1, 2], [2, 3, 6], 3, 3))
输入 diag(sparse([0, 1, 2], [1, 1, 2], [2, 3, 6], 3, 3))
结果 [[3, 3, 0], [1, 1, 3], [2, 2, 6]]
结果 [[3, 3, 0], [1, 1, 3], [2, 2, 6]]
```
```
###
9
.2.2.4
###
10
.2.2.4
```
rustscript
```
rustscript
triu(A), tril(A)
triu(A), tril(A)
reshape(A, m, n), repmat(A, m, n)
reshape(A, m, n), repmat(A, m, n)
```
```
###
9
.3 张量操作函数
###
10
.3 张量操作函数
####
9
.3.1 形状和尺寸
####
10
.3.1 形状和尺寸
####
9
.3.1.1 获取指定维度大小
####
10
.3.1.1 获取指定维度大小
```
rustscript
```
rustscript
函数
函数
size
size
...
@@ -1965,7 +2021,7 @@ reshape(A, m, n), repmat(A, m, n)
...
@@ -1965,7 +2021,7 @@ reshape(A, m, n), repmat(A, m, n)
输入 size([[1], [2], [3]], 1)
输入 size([[1], [2], [3]], 1)
结果 1
结果 1
```
```
####
9
.3.1.2 获取元素总数
####
10
.3.1.2 获取元素总数
```
rustscript
```
rustscript
函数
函数
length
length
...
@@ -1983,7 +2039,7 @@ reshape(A, m, n), repmat(A, m, n)
...
@@ -1983,7 +2039,7 @@ reshape(A, m, n), repmat(A, m, n)
输入 length(sparse([0,0], [0,1], [1,-2], 2, 2))
输入 length(sparse([0,0], [0,1], [1,-2], 2, 2))
结果 2
结果 2
```
```
####
9
.3.1.3 获取维度数
####
10
.3.1.3 获取维度数
```
rustscript
```
rustscript
函数
函数
ndim
ndim
...
@@ -2001,13 +2057,13 @@ reshape(A, m, n), repmat(A, m, n)
...
@@ -2001,13 +2057,13 @@ reshape(A, m, n), repmat(A, m, n)
输入 ndim(
[
[1
]
,
[
2
]
,
[
3
]
])
输入 ndim(
[
[1
]
,
[
2
]
,
[
3
]
])
结果 2
结果 2
```
```
####
9
.3.1.4 元素个数
####
10
.3.1.4 元素个数
```
rustscript
```
rustscript
numel(tensor) // 元素个数
numel(tensor) // 元素个数
```
```
####
9
.3.2 张量切片和操作
####
10
.3.2 张量切片和操作
####
9
.3.2.1 张量切片操作
####
10
.3.2.1 张量切片操作
```
rustscript
```
rustscript
函数
函数
slice
slice
...
@@ -2049,7 +2105,7 @@ numel(tensor) // 元素个数
...
@@ -2049,7 +2105,7 @@ numel(tensor) // 元素个数
voltage = slice(bus,
[
0
]
,
[
VM-1, VM
]
); // 所有行,VM列(二维张量)
voltage = slice(bus,
[
0
]
,
[
VM-1, VM
]
); // 所有行,VM列(二维张量)
angle = slice(bus,
[
0
]
, VA-1); // 所有行,VA列(一维张量)
angle = slice(bus,
[
0
]
, VA-1); // 所有行,VA列(一维张量)
```
```
####
9
.3.2.2 设置张量元素值
####
10
.3.2.2 设置张量元素值
```
rustscript
```
rustscript
函数
函数
set
set
...
@@ -2072,7 +2128,7 @@ numel(tensor) // 元素个数
...
@@ -2072,7 +2128,7 @@ numel(tensor) // 元素个数
输入 set(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,2
]
, 2, 2),
[
1, 3
]
,
[
3, 4
]
)
输入 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
]
]
结果
[
[2, 2, 0
]
,
[
0, 0, 1
]
,
[
0, 1, 3
]
,
[
1, 1, 4
]
]
```
```
####
9
.3.2.3 张量元素累加赋值 (相当于 +=)
####
10
.3.2.3 张量元素累加赋值 (相当于 +=)
```
rustscript
```
rustscript
函数
函数
set2
set2
...
@@ -2096,8 +2152,8 @@ numel(tensor) // 元素个数
...
@@ -2096,8 +2152,8 @@ numel(tensor) // 元素个数
结果
[
[2, 2, 0
]
,
[
0, 0, 1
]
,
[
0, 1, 5
]
,
[
1, 1, 4
]
]
结果
[
[2, 2, 0
]
,
[
0, 0, 1
]
,
[
0, 1, 5
]
,
[
1, 1, 4
]
]
```
```
####
9
.3.3 张量拼接
####
10
.3.3 张量拼接
####
9
.3.3.1 横向拼接张量
####
10
.3.3.1 横向拼接张量
```
rustscript
```
rustscript
函数
函数
horzcat
horzcat
...
@@ -2116,7 +2172,7 @@ numel(tensor) // 元素个数
...
@@ -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(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)
]
]
[
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
```
rustscript
函数
函数
vertcat
vertcat
...
@@ -2136,18 +2192,18 @@ numel(tensor) // 元素个数
...
@@ -2136,18 +2192,18 @@ numel(tensor) // 元素个数
[
c(7, -7), c(8, -8), c(9, -9)
]
,
[
c(10, -10), c(11, -11), c(12, -12)
]
]
[
c(7, -7), c(8, -8), c(9, -9)
]
,
[
c(10, -10), c(11, -11), c(12, -12)
]
]
```
```
####
9
.3.4 序列生成
####
10
.3.4 序列生成
####
9
.3.4.1 生成序列 [start, start+1, ..., end-1] (前闭后开)
####
10
.3.4.1 生成序列 [start, start+1, ..., end-1] (前闭后开)
```
rustscript
```
rustscript
range(start, end)
range(start, end)
```
```
####
9
.3.4.2 在start和end间生成num个等间距点
####
10
.3.4.2 在start和end间生成num个等间距点
```
rustscript
```
rustscript
linspace(start, end, num)
linspace(start, end, num)
```
```
####
9
.3.5 统计函数
####
10
.3.5 统计函数
####
9
.3.5.1 按维度求和
####
10
.3.5.1 按维度求和
```
rustscript
```
rustscript
函数
函数
sum
sum
...
@@ -2179,7 +2235,7 @@ linspace(start, end, num)
...
@@ -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)
输入 sum(sparse(
[
0,0,1,1
]
,
[
0,1,0,1
]
,
[
1,2,3,4
]
, 2, 2), 0)
结果
[
3, 7
]
结果
[
3, 7
]
```
```
####
9
.3.5.2 所有元素求和
####
10
.3.5.2 所有元素求和
```
rustscript
```
rustscript
函数
函数
sum_all
sum_all
...
@@ -2197,7 +2253,7 @@ linspace(start, end, num)
...
@@ -2197,7 +2253,7 @@ linspace(start, end, num)
输入 sum_all(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,2
]
, 2, 2))
输入 sum_all(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,2
]
, 2, 2))
结果 3
结果 3
```
```
####
9
.3.5.3 平均值
####
10
.3.5.3 平均值
```
rustscript
```
rustscript
函数
函数
mean
mean
...
@@ -2215,15 +2271,15 @@ linspace(start, end, num)
...
@@ -2215,15 +2271,15 @@ linspace(start, end, num)
输入 mean(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,2
]
, 2, 2))
输入 mean(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,2
]
, 2, 2))
结果 1.5
结果 1.5
```
```
####
9
.3.5.4 标准差
####
10
.3.5.4 标准差
```
rustscript
```
rustscript
std(tensor)
std(tensor)
```
```
####
9
.3.5.5 方差
####
10
.3.5.5 方差
```
rustscript
```
rustscript
var(tensor)
var(tensor)
```
```
####
9
.3.5.6 最大值
####
10
.3.5.6 最大值
```
rustscript
```
rustscript
函数
函数
max
max
...
@@ -2246,7 +2302,7 @@ var(tensor)
...
@@ -2246,7 +2302,7 @@ var(tensor)
输入 max(sparse(
[
0,0,1,1
]
,
[
0,1,0,1
]
,
[
1,2,3,4
]
, 2, 2))
输入 max(sparse(
[
0,0,1,1
]
,
[
0,1,0,1
]
,
[
1,2,3,4
]
, 2, 2))
结果 4
结果 4
```
```
####
9
.3.5.7 最小值
####
10
.3.5.7 最小值
```
rustscript
```
rustscript
函数
函数
min
min
...
@@ -2269,14 +2325,14 @@ var(tensor)
...
@@ -2269,14 +2325,14 @@ var(tensor)
输入 min(sparse(
[
0,0,1,1
]
,
[
0,1,0,1
]
,
[
1,2,3,4
]
, 2, 2))
输入 min(sparse(
[
0,0,1,1
]
,
[
0,1,0,1
]
,
[
1,2,3,4
]
, 2, 2))
结果 1
结果 1
```
```
####
9
.3.5.8 中位数
####
10
.3.5.8 中位数
```
rustscript
```
rustscript
median(tensor)
median(tensor)
//其中,max()和min()可以如下用法:max(a,
[
0
]
,1),min(a,
[
0
]
,1),参数和slice函数的定义相同
//其中,max()和min()可以如下用法:max(a,
[
0
]
,1),min(a,
[
0
]
,1),参数和slice函数的定义相同
```
```
####
9
.3.6 查找函数
####
10
.3.6 查找函数
####
9
.3.6.1 查找非零元素
####
10
.3.6.1 查找非零元素
```
rustscript
```
rustscript
函数
函数
find
find
...
@@ -2294,7 +2350,7 @@ median(tensor)
...
@@ -2294,7 +2350,7 @@ median(tensor)
输入 find(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,-2
]
, 2, 2))
输入 find(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,-2
]
, 2, 2))
结果
[
[2, 2, 0
]
,
[
0, 0, 1
]
,
[
0, 1, -2
]
]
结果
[
[2, 2, 0
]
,
[
0, 0, 1
]
,
[
0, 1, -2
]
]
```
```
####
9
.3.6.2 查找最接近指定值的元素
####
10
.3.6.2 查找最接近指定值的元素
```
rustscript
```
rustscript
函数
函数
find_nearest
find_nearest
...
@@ -2313,7 +2369,7 @@ median(tensor)
...
@@ -2313,7 +2369,7 @@ median(tensor)
输入 find_nearest(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,-2
]
, 2, 2), -1)
输入 find_nearest(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,-2
]
, 2, 2), -1)
结果 -2
结果 -2
```
```
####
9
.3.6.3 查找最接近指定值的元素位置
####
10
.3.6.3 查找最接近指定值的元素位置
```
rustscript
```
rustscript
函数
函数
find_nearest_pos
find_nearest_pos
...
@@ -2333,7 +2389,7 @@ median(tensor)
...
@@ -2333,7 +2389,7 @@ median(tensor)
输入 find_nearest_pos(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,-2
]
, 2, 2), -1)
输入 find_nearest_pos(sparse(
[
0,0
]
,
[
0,1
]
,
[
1,-2
]
, 2, 2), -1)
结果
[
0, 1
]
结果
[
0, 1
]
```
```
####
9
.3.6.4 检测指定维度是否存在非零元素
####
10
.3.6.4 检测指定维度是否存在非零元素
```
rustscript
```
rustscript
函数
函数
any
any
...
@@ -2361,7 +2417,7 @@ median(tensor)
...
@@ -2361,7 +2417,7 @@ median(tensor)
输入 any(sparse(
[
0, 1, 2
]
,
[
1, 0, 1
]
,
[
2, 3, 6
]
, 3, 3))
输入 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
]
]
结果
[
[3, 1, 0
]
,
[
0, 0, 1
]
,
[
1, 0, 1
]
,
[
2, 0, 1
]
]
```
```
####
9
.3.6.5 检测张量是否为空
####
10
.3.6.5 检测张量是否为空
```
rustscript
```
rustscript
函数
函数
is_empty
is_empty
...
@@ -2379,7 +2435,7 @@ median(tensor)
...
@@ -2379,7 +2435,7 @@ median(tensor)
输入 is_empty(sparse(
[
],[
]
,
[
], 2, 2))
输入 is_empty(sparse(
[
],[
]
,
[
], 2, 2))
结果 1
结果 1
```
```
####
9
.3.6.6 检测是否无穷数
####
10
.3.6.6 检测是否无穷数
```
rustscript
```
rustscript
函数
函数
is_inf
is_inf
...
@@ -2397,13 +2453,13 @@ median(tensor)
...
@@ -2397,13 +2453,13 @@ median(tensor)
输入 is_inf(sparse(
[
0,0,1
]
,
[
0,1,0
]
,
[
0,INF,NEG_INF
]
, 2, 2))
输入 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
]
]
结果
[
[2, 2, 0
]
,
[
0, 0, 0
]
,
[
0, 1, 1
]
,
[
1, 0, 1
]
]
```
```
####
9
.3.6.7 检测所有元素是否非零
####
10
.3.6.7 检测所有元素是否非零
```
rustscript
```
rustscript
all(tensor)
all(tensor)
```
```
####
9
.3.7 获取多个元素
####
10
.3.7 获取多个元素
####
9
.3.7.1 根据索引获取多个元素(可不连续)
####
10
.3.7.1 根据索引获取多个元素(可不连续)
```
rustscript
```
rustscript
函数
函数
get_multi
get_multi
...
@@ -2420,9 +2476,9 @@ all(tensor)
...
@@ -2420,9 +2476,9 @@ all(tensor)
结果
[
c(3, 4), c(5, 6)
]
结果
[
c(3, 4), c(5, 6)
]
```
```
###
9
.4 稀疏矩阵
###
10
.4 稀疏矩阵
###
9
.4.1 创建稀疏矩阵
###
10
.4.1 创建稀疏矩阵
###
9
.4.1.1 由三元组创建稀疏矩阵
###
10
.4.1.1 由三元组创建稀疏矩阵
```
rustscript
```
rustscript
函数
函数
sparse
sparse
...
@@ -2439,8 +2495,8 @@ all(tensor)
...
@@ -2439,8 +2495,8 @@ all(tensor)
输入 sparse(
[
0, 1, 2
]
,
[
1, 0, 1
]
,
[
2, 3, 6
]
, 3, 2)
输入 sparse(
[
0, 1, 2
]
,
[
1, 0, 1
]
,
[
2, 3, 6
]
, 3, 2)
结果
[
[3, 2, 0
]
,
[
0, 1, 2
]
,
[
1, 0, 3
]
,
[
2, 1, 6
]
]
结果
[
[3, 2, 0
]
,
[
0, 1, 2
]
,
[
1, 0, 3
]
,
[
2, 1, 6
]
]
```
```
###
9
.4.2 稀疏矩阵操作
###
10
.4.2 稀疏矩阵操作
###
9
.4.2.1 转为稠密矩阵
###
10
.4.2.1 转为稠密矩阵
```
rustscript
```
rustscript
函数
函数
full
full
...
@@ -2452,16 +2508,16 @@ all(tensor)
...
@@ -2452,16 +2508,16 @@ all(tensor)
输入 full(sparse(
[
0, 1, 1
]
,
[
1, 0, 2
]
, 2, 3))
输入 full(sparse(
[
0, 1, 1
]
,
[
1, 0, 2
]
, 2, 3))
结果
[
[0, 2, 0
]
,
[
4, 0, 6
]
]
结果
[
[0, 2, 0
]
,
[
4, 0, 6
]
]
```
```
####
9
.4.2.2 非零元素个数
####
10
.4.2.2 非零元素个数
```
rustscript
```
rustscript
nnz_count = nnz(sparse_mat);
nnz_count = nnz(sparse_mat);
```
```
####
9
.4.2.3 显示稀疏模式
####
10
.4.2.3 显示稀疏模式
```
rustscript
```
rustscript
spy(sparse_mat);
spy(sparse_mat);
```
```
###
9
.5 张量操作详细示例
###
10
.5 张量操作详细示例
```
rustscript
```
rustscript
// 实际使用示例(来自make_y_bus函数)
// 实际使用示例(来自make_y_bus函数)
nb = size(bus, 0); // 获取母线数量
nb = size(bus, 0); // 获取母线数量
...
@@ -2486,8 +2542,8 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
...
@@ -2486,8 +2542,8 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
vertcat(Yff,Yft,Ytf,Ytt), nb, nb);
vertcat(Yff,Yft,Ytf,Ytt), nb, nb);
```
```
## 1
0
. 方程组和优化模型求解
## 1
1
. 方程组和优化模型求解
### 1
0
.1 线性方程组求解
### 1
1
.1 线性方程组求解
```
rustscript
```
rustscript
函数
函数
sp_linsolve
sp_linsolve
...
@@ -2510,7 +2566,7 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
...
@@ -2510,7 +2566,7 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
结果 [-28.79, 4, 17.89, 0]
结果 [-28.79, 4, 17.89, 0]
```
```
### 1
0
.2 混合整数线性规划
### 1
1
.2 混合整数线性规划
```rustscript
```rustscript
函数
函数
intlinprog
intlinprog
...
@@ -2532,7 +2588,7 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
...
@@ -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
]
结果
[
1, 0.2, 0, 1, 1, 16.6, 0
]
```
```
### 1
0
.3 非线性规划
### 1
1
.3 非线性规划
```
rustscript
```
rustscript
函数
函数
fmincon
fmincon
...
@@ -2559,9 +2615,9 @@ Ybus = sparse(horzcat(f,f,t,t), horzcat(f,t,f,t),
...
@@ -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]
结果 [0.9999999900103392, 4.742999643578124, 3.8211499789476977, 1.379408293213419, 17.014017140221718, 0]
```
```
## 1
1
. 数据结构示例
## 1
2
. 数据结构示例
### 1
1
.1 电力系统数据(基于 case14)
### 1
2
.1 电力系统数据(基于 case14)
```rustscript
```rustscript
// 系统基准功率
// 系统基准功率
baseMVA = 100;
baseMVA = 100;
...
@@ -2589,9 +2645,9 @@ branch = [
...
@@ -2589,9 +2645,9 @@ branch = [
];
];
```
```
## 1
2
. 模块系统
## 1
3
. 模块系统
### 1
2
.1 模块导入
### 1
3
.1 模块导入
```rustscript
```rustscript
// 导入整个模块
// 导入整个模块
import power_flow;
import power_flow;
...
@@ -2603,7 +2659,7 @@ import {newton_pf, fast_decoupled_pf} from power_flow;
...
@@ -2603,7 +2659,7 @@ import {newton_pf, fast_decoupled_pf} from power_flow;
import newton_pf as newton from power_flow;
import newton_pf as newton from power_flow;
```
```
### 1
2
.2 模块定义
### 1
3
.2 模块定义
```rustscript
```rustscript
// 模块文件: power_flow.rs
// 模块文件: power_flow.rs
export fn newton_pf(baseMVA, bus, gen, branch) {
export fn newton_pf(baseMVA, bus, gen, branch) {
...
@@ -2616,9 +2672,9 @@ export fn fast_decoupled_pf(baseMVA, bus, gen, branch) {
...
@@ -2616,9 +2672,9 @@ export fn fast_decoupled_pf(baseMVA, bus, gen, branch) {
```
```
## 1
3
. 与MATLAB的对比
## 1
4
. 与MATLAB的对比
### 1
3
.1 主要差异
### 1
4
.1 主要差异
| 特性 | MATLAB | RustScript | 说明 |
| 特性 | MATLAB | RustScript | 说明 |
|------|---------------------|-----------------------|------|
|------|---------------------|-----------------------|------|
...
@@ -2631,7 +2687,7 @@ export fn fast_decoupled_pf(baseMVA, bus, gen, branch) {
...
@@ -2631,7 +2687,7 @@ export fn fast_decoupled_pf(baseMVA, bus, gen, branch) {
| 逻辑运算 | `&`, `\|`, `~` | `&&`, `\|\|`, `~~` | 逻辑运算符不同 |
| 逻辑运算 | `&`, `\|`, `~` | `&&`, `\|\|`, `~~` | 逻辑运算符不同 |
| 结构体 | `struct` | 无结构体,使用张量和变量组织 | RustScript没有结构体概念 |
| 结构体 | `struct` | 无结构体,使用张量和变量组织 | RustScript没有结构体概念 |
### 1
3
.2 索引转换详解
### 1
4
.2 索引转换详解
**最重要的差异:MATLAB使用1基索引,RustScript使用0基索引**
**最重要的差异:MATLAB使用1基索引,RustScript使用0基索引**
...
@@ -2651,7 +2707,7 @@ slice(bus, [0], [i-1,i]) // 第i列所有行(需要减1)
...
@@ -2651,7 +2707,7 @@ slice(bus, [0], [i-1,i]) // 第i列所有行(需要减1)
range(0, n) // 生成 [0, 1, 2, ..., n-1] (前闭后开)
range(0, n) // 生成 [0, 1, 2, ..., n-1] (前闭后开)
```
```
### 1
3
.3 转换示例对比
### 1
4
.3 转换示例对比
**MATLAB到RustScript的典型转换:**
**MATLAB到RustScript的典型转换:**
...
@@ -2688,7 +2744,7 @@ fn make_y_bus(baseMVA, bus, branch) {
...
@@ -2688,7 +2744,7 @@ fn make_y_bus(baseMVA, bus, branch) {
}
}
```
```
### 1
3
.4 转换器的索引处理策略
### 1
4
.4 转换器的索引处理策略
在MATLAB到RustScript转换过程中,转换器需要特别处理索引:
在MATLAB到RustScript转换过程中,转换器需要特别处理索引:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论