variable主命令
介绍variable主命令的使用和参数含义
用户变量
Feat可以在脚本文件中定义用户变量,用于做一些初步的计算和设置。Variable命令主要用于在Feat脚本中定义、删除、更新用户变量。Feat的变量类型分为数值型和字符型两种。变量名只能是字母、数字或下划线的组合,每个变量名要以字母开头,变量名的长度没有限制,变量名是大小写敏感的。
数值型变量
- 数值型变量都是双精度型的,可以是标量、一维、二维数组。一维数组值采用[i]来取值,二维数组通过[i][j]来取值,其中i、j的取值从1到数组的大小。也可以采用通配取值符“:”来进行取值,例如,如果a是一个二维数组,则a[1][1]、a[1:5][2]、a[1][:]、a[2:5]都是正确的取值方式。
- 数值型变量可以进行数值运算,Feat支持的数值运算符有:+(加)、-(减)、*(乘)、/(除)、^(指数)、>(大于)、<(小于)、<=(小于等于)、>=(大于等于)、==(等于)。
- Feat支持的数值运算函数有:sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, log2, log10, log, ln, exp, sqrt, sign, rint, abs, min, max, sum, avg。
- 如果相互操作的是数组,要求数组的大小是相同的,但标量可以与任何大小的数组相互操作。
字符型变量
- 字符型变量采用双引号来定义,例如str = “Hello Feat”。字符型变量也可以通过其它字符字符型变量或数值型变量进行定义。例如,如果定义str2 = “${str}, good variable”,则str2的值为:“Hello Feat, good variable”;如果定义了数值变量b = 12.3,再定义字符变量:str3 = “b = ${b}”,则str3的值为:“b = 12.3”。
- 数值型变量也可以赋予字符型值,用于对变量的描述,例如:如果已定义c = 3.14,又定义:c = “This is Pi”,则c仍然为数值型的变量,但具有一个描述字符串,描述字符串可以通过“${&c}”获得。
Feat系统变量
为了便于计算和输出,Feat定义了一些系统变量,可在脚本文件中使用:
变量名 | 类型 | 维度 | 变量含义 |
---|---|---|---|
Pi | 数值 | 1 x 1 | 3.1415926 |
Unit | 数值 | 1024 x 1024 | 单位对称阵,用于生成不同大小的矩阵 |
Ones | 数值 | 1024 x 1024 | 由1组成的矩阵,用于生成不同大小的矩阵 |
Inf | 数值 | 1 x 1 | 无限大(实际上是一个很大的浮点数) |
Title | 字符 | 动态 | 项目名称(可更改) |
Script | 字符 | 动态 | 脚本文件名称 |
Time | 数值/字符 | 1 x 1 | 数值表示运行时间, 字符表示当前日期时间 |
variable命令的使用
作用
设置和使用变量。
形式
variable a value
b @Reduce …
delete a b c
print a b c
s1 = “hello ${a}”
s2 = “hello ${&b}”
d = [1.1, 1.2; 2.1, 2.2]
h = { X[2][1] + Pi }
h = []
说明
variable a value
:定义一个变量a,其值为value,也可以通过“=”来定义,与a = value是相同的。variable b @Reduce -mode [max|min|sum|aver] –group groupName –region regionName var1 var2 var3 …
:定义一个用户变量b,其值为var1, var2, var3的归约操作值。var1, var2, var3应当是原子信息数组,大小为N x 1。-mode选项决定了归约形式,即求最小值(max)、最大值(min)、求和(sum)或者求平均值(aver)。-group选项表示归约操作只对在groupName组的原子操作。-region选项表示归约操作只对在regionName区域的原子操作。variable delete a b c
:删除a、b、c三个变量。s1 = “hello ${a}”
: 设置字符串变量s1,并获得数值变量a的值变成字符串作为s1的一部分。s2 = “hello ${&b}”
: 设置字符串变量s2,并获得数值变量b的描述字符串值作为s2的一部分。d = [1.1, 1.2; 2.1, 2.2]
: 设置d为一2 x 2的矩阵,并赋值。h = { X[2][1] + Pi }
: 设置h为表达式型变量,在后续的计算过程中,h的值会随着X[2][1]的变化而自动发生变化。如果去掉“{}”,则变量h一直保持为第一次赋值时的值不变。h = []
: 删除变量h。
示例
var a1 sqrt(2)
a = 1.2 + a1
b = Ones[:3][:4]
b = "This is a test matrix"
c = a + b + sqrt(3)
d = [1.1, 1.2; 2.1, 2.2]
e = "Hello Feat"
f = "a = ${a}, c = [${c}]."
g = @Reduce –mode max X[:][1]
h = { X[2][1] + Pi }