英语法语西班牙语

Ad


OnWorks 网站图标

minccalc - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 minccalc

这是命令 minccalc 可以在 OnWorks 免费托管服务提供商中使用我们的多个免费在线工作站之一运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


minccalc - 对 minc 文件执行复杂的数学运算

概要


最小计算 [ ] .mnc [ .mnc...] .mnc

商品描述


明卡尔 将对一个或多个 minc 文件执行复杂的、逐体素的数学运算
相同的形状和相同的坐标采样,产生一个单一的输出文件。
要执行的操作是使用输入 -表达 参数(见 表情).
默认情况下,输出文件是最后一个非选项参数。 然而,如果 -输出文件
使用选项,然后所有非选项参数都被视为输入文件和输出
文件名来自 -输出文件 选项,其中可以有多个。

配置


请注意,可以以缩写形式指定选项(只要它们是唯一的)和
可以在命令行的任何地方给出。

-2 创建 MINC 2.0 格式的输出文件。

-救命 打印命令行选项的摘要并退出。

-版
打印程序的版本号并退出。

-破坏者
覆盖现有文件。

-noclobber
不要覆盖现有文件(默认)。

-no_clobber
-noclobber 的同义词。

-冗长
打印出复制的每个数据块的进度信息(默认)。

-安静的 不要打印出进度信息。

-调试 打印调试信息。

-复制头
复制第一个输入文件中的所有头信息(一个输入文件的默认值)
文件)。

-无复制头
不要从第一个输入文件中复制所有标题; 只复制坐标
信息(默认用于多个输入文件)。

-文件类型
创建一个与第一个输入文件类型相同的输出文件(默认)。

-字节 以 8 位整数格式存储输出体素。

-短 以 16 位整数格式存储输出体素。

-int 以 32 位整数格式存储输出体素。

-长 被取代 -int.

-漂浮 以 32 位浮点格式存储输出体素。

-双
以 64 位浮点格式存储输出体素。

-签
使用有符号的二进制补码整数格式。 仅当输出体素类型
被指定为整数类型(其中之一 -字节, -短, -int or -长).

-未签名
使用无符号整数格式。 仅当输出体素类型指定为
是整数类型(其中之一 -字节, -短, -int or -长).

-范围 分钟 最大
限制整数数据的有效范围。 仅在以下情况之一适用 -字节,
-短, -int or -长 选项被指定。

-max_buffer_size_in_kb 尺寸
指定内部缓冲区的最大大小(以千字节为单位)。 默认值为 4096
(4MB)。

- 尺寸 名称
指定我们希望沿其执行累积操作的维度。

-检查尺寸
检查所有输入文件是否在世界维度(默认)中具有匹配的采样。

-nocheck_dimensions
忽略输入文件的世界维度采样中的任何差异。

-传播南
对于累积向量运算 (总和, 平均), 无效数据 (Not-A-Number
或 NaN) 在向量的任何元素中都会在结果中产生无效数据
(默认)。

-ignore_nan
对于累积向量运算,向量中的无效数据 (NaN) 将被忽略,即。
将其视为不存在。

-南 当尝试对体素进行非法操作(例如除以零)时,
结果是无效数据 (NaN)(默认)。 没有有效的累积输入数据
操作也被视为非法操作,当 -ignore_nan 用来。

-零 当尝试对体素进行非法操作(例如除以零)时,
结果为零值。

-非法值 折扣值
当尝试对体素进行非法操作(例如除以零)时,
结果是此选项指定的值。

-表达 绳子
指定要在每个体素上计算的表达式(请参阅表达式)。

-exp文件 文件名
指定一个文件,其中包含要在每个体素上计算的表达式(请参阅
表达式)。 如果给出了文件名“-”,则从标准输入中读取表达式。
与命令行表达式的唯一区别是注释可以在
文件。 通过将“#”作为第一个非注释行来指定注释行
行的空白字符。 Minccalc 脚本可以通过设置
第一行到

#! /usr/local/mni/bin/minccalc -expfile

-输出文件 符号 输出文件
指定应将输出写入指定文件,从
应在表达式中创建的符号(请参阅 示例 部分)。 如果
给出这个选项,那么所有非选项参数都被作为输入文件。 这个
选项可以多次用于多个输出文件。

-评估宽度 折扣值
指定要并行处理的体素数。 默认值为 200。

表情


-表达 参数是描述要评估的函数的单个字符串。 这
函数表达式通常用向量 A 来写。

例如,以下表达式会将前两个输入文件相加:

A[0] + A[1]

多个表达式可以用分号分隔,在这种情况下,只有
使用最后一个表达式。 这些表达式列表可以与赋值一起使用
使语法非常像 C 的表达式:

比率 = A[0]/A[1]; A[2]*exp(-ratio)

大括号中的表达式列表是一个有效的表达式并返回 last 的值
列表中的表达式。 这在以下方面特别有用 if 表达式(见下文)。

语言中有两种类型的值:向量和标量。 标量文字是
浮点数或可能显示为名称以小写字母开头的符号。

除了正常的标量运算符,如 +、-、* 和 /,表达式语言也
支持中缀求幂运算符 ^ ,通常的关系运算符 <, <=, >,
>=, ==, != 以及布尔运算符 && (and), || (或)和! (不是)。 请注意,
&& 和 || 与 C 不同,布尔运算符总是计算两个操作数。标量数学
功能包括 ABS, 开方, EXP, 日志, , , 黄褐色, 阿辛, 阿科斯晒黑。 还有
一些专门的功能:

isnan(v) - 如果 v 无效则为 1,否则为 0
钳位(v1,v2,v3) - v1 以 [v2, v3] 为界
segment(v1,v2,v3) - 测试 v1 是否在 [v2, v3] 中

标量常数 NaN 被定义为使得 isnan(NaN) 返回 1。

向量可以写成以下“扩展”形式

[值1,值2,...]

或使用以下范围生成符号:

[ a : b ] 生成 {a, a+1, ..., b-1, b}
[ a : b ) 生成 {a, a+1, ..., b-1}
( a : b ] 生成 {a+1, ..., b-1, b}
( a : b ) 生成 {a+1, ..., b-1}

或由“意图”产生。 以下内涵表达式生成向量
{3,2,1}:

{ i 在 [1:3] | 4 - 我}

矢量也可以显示为名称以大写字母开头的符号。

除了标量运算符之外,还提供了以下向量运算符:

avg - 向量中标量的平均值
len - 的长度
sum - 元素的总和
prod - 元素的乘积
max - 的最大值
min - 的最小值
imax - 最大值的索引
imin - 最小值的索引
V[s] - 原点为 0 的向量 V 的第 s 个元素。

符号名通过赋值表达式引入全局符号表
申请

一 = A[2] * 日志(2)

以小写字母开头的符号代表标量,而以字母开头的符号代表标量
大写字母表示向量。 因为 = 是一个运算符,所以它的结果可以用于
表达式(如在 C 中)。

提供了一些控制结构:

可以创建 For 循环来循环向量,将每个值分配给一个符号,然后
评估一个表达式。 这是通过以下形式的表达式完成的

总计=0; for{i in [0:len(A))} total=total+A[i]; 全部的

这相当于 sum(A)。 请注意,这类似于使用

总计=0; len{i in [0:len(A)) | 总计=总计+A[i]}; 全部的

构造实际上是一个操作符(虽然它通常只用于
改变符号值)。 另请注意,如果没有最终的“总计”,则表达式将
不是很有用,因为它只会返回向量的长度。

和 C 一样,表达式列表可以用 curl 来指定:

总计=总计2 = 0;
对于 {i in [0:len(A))} {
总计 = 总计 + A[i];
总计2 = 总计2 + A[i]^2
}

也有几种形式 如果-然后-其他 构造:

A[0]<0 ? 0 : A[0]

如果 (A[0]<0) 结果=0 否则结果=A[0]

其他 是可选的。 同样,if 构造是一个运算符,并且 然后 or 其他
表达式可以是卷曲的表达式列表,在这种情况下,最后一个的值
表达式返回。 如果 其他 缺少表达式,则返回值 0
当测试表达式为 0 (false) 时。

主要的奇怪之处在于 if 构造是与 C 语句不同,它们必须
即使表达式列表在
卷曲用于:

对于 i 在 [0:len(A)) {total=total+A[i]} ; 总数/len(A)
if (A[i]>0) {result=2;} else {result=1} ; 结果*5

引入符号名称的另一种方法是通过 -表达式。 例如,
以下表达式将始终计算为 3:

让 a = 1, b = 2 in a + b

这些最初设计为仅在评估表达式中创建变量,
但是已经进行了修改,以便更改全局符号表。

示例


这是计算标准偏差的表达式,考虑到
无效输入数据的可能性,忽略:

s0 = s1 = s2 = 0;

对于 { i 在 [0:len(A)) } {
v=A[i];
如果 (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};

如果(s0 > 1){
sqrt((s2 - s1*s1/s0) / (s0-1));
}
其他{
南;
};

如果 s0 > 0 但 <= 0,最后一个 if 可以更改为返回 1。我们也删除了 curl
括号,但不能有“;” 在 if 和 else 之间

如果(s0 > 1)
sqrt((s2 - s1*s1/s0) / (s0-1))
否则如果 (s0 > 0)
0
其他
为NaN

如果我们想要均值和标准差,我们可以使用 -输出文件 选项,
调用命令

minccalc -expfile 标准开发\
-outfile 意思是 mean.mnc \
-输出文件 stdev stdev.mnc \
infile1.mnc infile2.mnc ...

并使用表达式文件(使用另一种形式的 if 表达式):

s0 = s1 = s2 = 0;

对于 {i in [0:len(A))} {
v=A[i];
如果 (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};

标准差 = (s0 > 1) ? sqrt((s2 - s1*s1/s0) / (s0-1)) :
(s0 > 0) ? 0 : NaN ;
平均值 = (s0 > 0) ? s1 / s0 : NaN ;

洞穴


你应该记住的几件事......

向量变量必须以大写字母开头。

向量变量名不能是函数关键字之一,
sum、len、prod 等

For 循环和 if 表达式总是需要用 a 与下一个表达式分开
分号。

符号表是全局的。

布尔运算符 && 和 || 始终评估两个操作数。

关于并行性的说明:出于效率原因,一次对许多体素进行评估
(体素的数量称为评估的宽度,并随
-评估宽度 选项)。 一个奇怪的结果是 if-else 的两边
语句总是被评估(除非所有体素给出相同的测试结果),但是
每个结果中的语句仅在适当的体素上进行评估。 在
特别是,符号表中的条目仅根据体素掩码进行修改。 一种
这样做的副作用是在 if-else 结果中设置的任何向量符号都不能改变
符号的长度(虽然它可以创建它)和结果的两边必须
就他们都修改的任何矢量符号的长度达成一致。 如果这还不清楚,
试试吧——如果它不开心,程序就会抱怨。

使用 onworks.net 服务在线使用 minccalc


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad