これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド minccalc です。
プログラム:
NAME
minccalc - minc ファイルに対して複雑な数学演算を実行します
SYNOPSIS
ミンカルク [ ] .mnc [ .mnc...] .mnc
DESCRIPTION
ミンカルク XNUMX つまたは複数の minc ファイルに対して、ボクセルごとの複雑な数学演算を実行します。
同じ形状で同じ座標サンプリングを持ち、単一の出力ファイルを生成します。
実行する操作は、 -表現 引数(を参照) 表現).
デフォルトでは、出力ファイルはオプション以外の最後の引数です。 ただし、 -outfile
オプションが使用されている場合、オプション以外の引数はすべて入力ファイルとみなされ、出力ファイルと見なされます。
ファイル名の由来は、 -outfile オプションがあり、複数存在する場合があります。
OPTIONS
オプションは(一意である限り)省略形で指定できることに注意してください。
コマンドラインのどこにでも指定できます。
-2 MINC 2.0 形式の出力ファイルを作成します。
-助けて コマンドラインオプションの概要を出力して終了します。
-バージョン
プログラムのバージョン番号を出力して終了します。
-クロバー
既存のファイルを上書きします。
-ノクロバー
既存のファイルを上書きしません (デフォルト)。
-no_clobber
-noclobber の同義語。
-詳細
コピーされたデータの各チャンクの進行状況情報を出力します (デフォルト)。
-静かな 進行状況情報を印刷しないでください。
-デバッグ デバッグ情報を出力します。
-コピーヘッダー
最初の入力ファイルからすべてのヘッダー情報をコピーします (XNUMX つの入力のデフォルト)
ファイル)。
-nocopy_header
最初の入力ファイルからすべてのヘッダーをコピーしないでください。 コーディネートのみをコピー
情報 (複数の入力ファイルのデフォルト)。
-ファイルの種類
最初の入力ファイルと同じタイプの出力ファイルを作成します (デフォルト)。
-バイト 出力ボクセルを 8 ビット整数形式で保存します。
-ショート 出力ボクセルを 16 ビット整数形式で保存します。
-int 出力ボクセルを 32 ビット整数形式で保存します。
-長いです に取って代わられる -int.
-浮く 出力ボクセルを 32 ビット浮動小数点形式で保存します。
-ダブル
出力ボクセルを 64 ビット浮動小数点形式で保存します。
-署名済み
符号付きの XNUMX の補数整数形式を使用します。 出力ボクセル タイプが次の場合にのみ適用されます。
整数型 (次のいずれか) になるように指定されます。 -バイト, -ショート, -int or -長いです).
-署名なし
符号なし整数形式を使用します。 出力ボクセル タイプが次のように指定されている場合にのみ適用されます。
整数型であること (次のいずれか) -バイト, -ショート, -int or -長いです).
-範囲 分 マックス
整数データの有効範囲を制限します。 次のいずれかの場合にのみ適用されます。 -バイト,
-ショート, -int or -長いです オプションが指定されています。
-max_buffer_size_in_kb サイズ
内部バッファの最大サイズをキロバイト単位で指定します。 デフォルトは4096です
(4MB)。
次元 ディムネーム
累積演算を実行する次元を指定します。
-check_dimensions
すべての入力ファイルにワールド ディメンション (デフォルト) で一致するサンプリングがあることを確認します。
-nocheck_dimensions
入力ファイルのワールド ディメンション サンプリングの違いを無視します。
-propagate_nan
累積ベクトル演算の場合 (合計, 突く & 平均)、無効なデータ (非数値)
または NaN) をベクトルの要素に含めると、結果に無効なデータが生成されます。
(ディフォルト)。
-ignore_nan
累積ベクトル演算の場合、ベクトル内の無効なデータ (NaN) は無視されます。
存在しないかのように扱われます。
ナン ボクセルで不正な操作 (ゼロ除算など) が試行されると、
結果は無効なデータ (NaN) になります (デフォルト)。 累積データに対する有効な入力データがありません
次の場合にも操作は違法操作とみなされます。 -ignore_nan 使用されている。
-ゼロ ボクセルで不正な操作 (ゼロ除算など) が試行されると、
結果は値ゼロです。
-illegal_value 値
ボクセルで不正な操作 (ゼロ除算など) が試行されると、
result はこのオプションで指定した値です。
-表現 文字列
各ボクセルで評価する式を指定します (「式」を参照)。
-expfile ファイル名
各ボクセルで評価する式を含むファイルを指定します (「
表現)。 ファイル名「-」が指定された場合、式は標準入力から読み取られます。
コマンドライン式との唯一の違いは、コメントを指定できることです。
ファイル。 コメント行は、最初の非行として「#」を置くことによって指定されます。
行の空白文字。 Minccalc スクリプトは、
最初の行から
#! /usr/local/mni/bin/minccalc -expfile
-outfile シンボル 出力ファイル
から値を取得して、出力を指定したファイルに書き込むように指定します。
式の中で作成する必要があるシンボル ( 例 セクション)。 もし
このオプションが指定されている場合、オプション以外の引数はすべて入力ファイルとして取得されます。 これ
このオプションは、複数の出力ファイルに対して複数回使用できます。
-eval_width 値
並列処理するボクセルの数を指定します。 デフォルトは 200 です。
表現
-表現 argument は、評価する関数を説明する単一の文字列です。 の
関数式は通常、ベクトル A に関して記述されます。
たとえば、次の式は最初の XNUMX つの入力ファイルを合計します。
A[0] + A[1]
複数の式をセミコロンで区切って指定できます。その場合、次の値のみが指定されます。
最後の式が使用されます。 これらの式リストは代入とともに使用できます。
構文を非常に C に似たものにするための式:
比率 = A[0]/A[1]; A[2]*exp(-ratio)
中括弧内の式リストは有効な式であり、最後の値を返します。
リスト内の式。 これは特に便利です for & if 式(以下を参照)。
この言語には、ベクトルとスカラーという XNUMX 種類の値があります。 スカラーリテラルは、
浮動小数点数、または名前が小文字で始まる記号として表示される場合もあります。
+、-、*、/ などの通常のスカラー演算子に加えて、式言語も
中置累乗演算子 ^ 、通常の関係演算子 <、<=、> をサポートします。
>=、==、!= およびブール演算子 && (and)、|| (または ! (ない)。 注意してください。
&& と || C とは異なり、ブール演算子は常に両方のオペランドを評価します。スカラー数学的
機能には以下が含まれます 腹筋, 平方根, EXP, ログ, 罪, COS, 日焼け, アシン, アコス & アタン。 もあります
いくつかの特殊な機能:
isnan(v) - v が無効な場合は 1、それ以外の場合は 0
クランプ(v1,v2,v3) - [v1, v2] によって境界付けされた v3
セグメント(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}:
{ [1:3] の i | 4 - 私 }
ベクトルは、名前が大文字で始まるシンボルとして表示される場合もあります。
スカラー演算子に加えて、次のベクトル演算子が提供されます。
avg - ベクトル内のスカラーの平均値
len - 長さ
sum - の要素の合計
prod - の要素の積
max - の最大値
min - の最小値
imax - の最大値のインデックス
imin - の最小値のインデックス
V[s] - 原点 0 を持つベクトル V の s 番目の要素。
シンボル名は、
フォーム
a = 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]}; 合計
から for コンストラクトは実際には演算子です (ただし、通常は次の目的でのみ使用されます)。
シンボル値を変更します)。 最後の「合計」がないと、式は次のようになります。
ベクトルの長さを返すだけなので、あまり役に立ちません。
C と同様に、式のリストは中文字で指定できます。
合計=合計2 = 0;
for {i in [0:len(A))} {
合計 = 合計 + A[i];
total2 = total2 + A[i]^2
}
いくつかの形式もありますが、 if-then-else 構成:
A[0]<0 ? 0 : A[0]
if (A[0]<0) 結果=0 else 結果=A[0]
ほかに はオプションです。 繰り返しますが、if 構文は演算子であり、 その後 or ほかに
式は中括弧内の式リストにすることができます。この場合、最後の値は
式が返されます。 もし ほかに 式が欠落している場合は、値 0 が返されます
テスト式が 0 (偽) の場合。
主な奇妙な点は、 for & if 構成要素は、C ステートメントとは異なり、次のことを行う必要があります。
式リストが含まれている場合でも、次の式とセミコロンで区切る必要があります。
カーリーが使用されます:
for i in [0:len(A)) {total=total+A[i]} ; 合計/レン(A)
if (A[i]>0) {result=2;} else {result=1} ; 結果*5
シンボル名を導入する別の方法は、 う-表現。 たとえば、
次の式は常に 3 と評価されます。
a + b で a = 1、b = 2 とします。
これらは元々、評価された式内でのみ変数を作成するように設計されていました。
ただし、グローバル シンボル テーブルが変更されるように変更が加えられています。
例
を考慮した標準偏差の計算式は次のとおりです。
無効な入力データの可能性がありますが、これは無視されます。
s0 = s1 = s2 = 0;
for { i in [0:len(A)) } {
v=A[i];
if (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};
if (s0 > 1) {
sqrt((s2 - s1*s1/s0) / (s0-1));
}
他{
NaN;
};
最後の if は、s0 が > 0 であるが <= 0 の場合に 1 を返すように変更できます。また、カーリーも削除します。
ただし、その場合は「;」があってはなりません。 if と else の間
if (s0 > 1)
sqrt((s2 - s1*s1/s0) / (s0-1))
else if (s0 > 0)
0
ほかに
NaN
平均と標準偏差の両方が必要な場合は、次のように使用できます。 -outfile オプション、
でコマンドを呼び出す
minccalc -expfile stdev \
-outfile 平均 平均.mnc \
-outfile stdev stdev.mnc \
infile1.mnc infile2.mnc ...
そして、式ファイルを使用します (さらに別の形式の if 式を使用):
s0 = s1 = s2 = 0;
for {i in [0:len(A))} {
v=A[i];
if (!isnan(v)) {
s0 = s0 + 1;
s1 = s1 + v;
s2 = s2 + v*v;
}
};
stdev = (s0 > 1) ? sqrt((s2 - s1*s1/s0) / (s0-1)) :
(s0 > 0) ? 0 : NaN ;
平均 = (s0 > 0) ? s1 / s0 : NaN ;
警告
覚えておくべきことがいくつかあります...
ベクトル変数は大文字で始める必要があります。
ベクトル変数名は関数キーワードの XNUMX つであってはなりません。
sum、len、prod、...など
for ループと if 式は、常に次の式から
セミコロン。
シンボル テーブルはグローバルです。
ブール演算子 && および || 常に両方のオペランドを評価します。
並列処理に関する注意: 効率上の理由から、評価は一度に多くのボクセルに対して行われます。
(ボクセルの数は評価の幅と呼ばれ、次のように変更されます)
-eval_width オプション)。 この奇妙な結果は、if-else の両側が
ステートメントは常に評価されます (すべてのボクセルが同じテスト結果を与えない限り)。
各後件内のステートメントは、適切なボクセルでのみ評価されます。 で
特に、シンボル テーブルのエントリはボクセル マスクに従ってのみ変更されます。 あ
これの副作用として、if-else の後件に設定されたベクトル シンボルは変更してはいけないことになります。
シンボルの長さ (シンボルを作成することはできますが) と結果の両側が一致する必要があります。
両方が変更するベクトル シンボルの長さに同意します。 これが明確でない場合は、
試してみてください。満足できない場合、プログラムは文句を言います。
onworks.net サービスを使用してオンラインで minccalc を使用する