リアルタイムアプリケーションに適したMathScript構文(MathScript RTモジュール)

LabVIEW 2012 MathScript RTモジュールヘルプ

発行日時: June 2012

製品番号: 373123C-0112

»製品情報を参照
ヘルプをダウンロード(Windowsのみ)

ナショナルインスツルメンツでLabVIEW MathScriptで可能な構文のサブセットをテストした結果、このトピックのサンプルおよび要件そしてその他の特定のガイドラインに従った場合、これらの構文は制限時間内に実行されました。確定性がアプリケーションで重要な場合、この構文を使用して、リアルタイムアプリケーションにデプロイするMathScriptノードで使用するスクリプトおよびユーザ定義関数を書き込みます。

一般的な演算

以下の表は、MathScriptで一般的に使用される演算で推奨される構文を示します。

コンストラクト 文法 要件
2項演算 a operator b operatorは、+-.*./.\.^<=>=<>==、および~=などの数値演算子です。

aおよびbは、同じ方向および要素数のベクトル、または同じ次元の行列です。または、1つの入力がスカラ値の場合、その他の入力はスカラ値、ベクトル、または行列になります。

aおよびbは、数値のデータタイプでなければなりません。
[1, 2] + [3, 4];
a operator b operatorは、==~=&&||&、および|などの論理演算子です。

aおよびbは、同じ方向および要素数のベクトル、または同じ次元の行列です。または、1つの入力がスカラ値の場合、その他の入力はスカラ値、ベクトル、または行列になります。

aおよびbは、ブール値でなければなりません。
[2, 3; 2, 2] ~= [3, 3; 2, 3];
a * b aおよびbは、倍精度浮動小数点数または複素倍精度浮動小数点数でなければなりません。 1つの入力はスカラ値かベクトルで、その他の入力はスカラ値、ベクトル、または行列です。 2 * [2; 3];
入力の1つはnxm行列で、その他の入力はmx1列ベクトルです。 [1, 4; 2, 3; 0, 3] * [1; 2];
入力の1つは1xn行ベクトルで、その他の入力はnm行列です。 [1, 2] * [1, 3, 5; 2, 4, 6];
入力の1つはmxn行列で、その他の入力はnxr行列です。 [0, 2; -1, 6; 3, 1; -2, 5] * [1, 3, 5; 2, 4, 6];
単項演算 -a, ~a, a', a.' aは、スカラ、ベクトル、または行列値です。

-aの場合、aは数値でなければなりません。~aの場合、aはブール値でなければなりません。a'およびa.'の場合、aはブールまたは数値でなければなりません。
[1, 2]';

~[1, 0; 0, 1];
定数値 定数 constantは、zerosonestruefalse、およびconstantsクラスの関数などの定数を生成するMathScript関数です。 pi;
constant(n) nは整数定数で、constantは定数を生成するMathScript関数です。 a = true(3);
constant(n, m) nおよびmは整数定数で、constantは定数を生成するMathScript関数です。 z = zeros(2, 3);
リテラル literal literalは、文字列定数または任意の数値データタイプの定数です。 a = 4;

b = 'string';
行列定義 [a1, a2, ..., an] aの値は、任意の数値データタイプのスカラ値か、NaNまたはInfなどの定数でなければなりません。aがベクトルまたは行列の場合、aからのスカラ値を行列で使用するために指標付けします。 a = [1, 2, 0];

b = [0; Inf];

aの値は、任意の数値データタイプのスカラ値か、NaNまたはInfなどの定数でなければなりません。 a = [1, 2, 0; 6, 1.5, 3];
範囲定義 start:stop startおよびstopは、整数または浮動小数点データタイプの定数スカラ数値、もしくはstart:stopが長さがスクリプトのラインの連続実行で固定されている定数以外の整数または浮動小数点数です。 b = 2:20;
start:step:stop startstep、およびstopは、整数または浮動小数点データタイプの定数スカラ数値、もしくはstart:step:stop)が長さがスクリプトのラインの連続実行で固定されている定数以外の整数または浮動小数点数です。 b = 2:2:20;

ループおよびステートメント

以下の表は、MathScriptで使用可能なループおよびステートメントの推奨される構文を示します。

コンストラクト 文法 要件
Forループ for iter = expression
statement-list
end
statement_listおよびexpressionは、該当する場合、ナショナルインスツルメンツがこのトピックで推奨し、その他のガイドラインで説明される演算、構文、または標準関数から構成されています。 expressionは、数値またはブール値のスカラ、ベクトル、または行列にならなければなりません。 for i = [3, 6, 9]
     a = sin(2*pi*i/10);
end
for iter = start:stop
statement_list
end
startおよびstopは、整数または浮動小数点データタイプのいずれかのスカラ数値です。 for i = 1:10
     a = sin(2*pi*i/10);
end
for iter = start:step:stop
statement_list
end
startstep、およびstopは、整数または浮動小数点データタイプのいずれかのスカラ数値です。 for i = 1:2:10
     a = sin(2*pi*i/10);
end
If-Elseステートメント if expression
statement_list
[elseif expression
statement-list]
...
[else
statement_list]
end
expressionは、スカラブール値にならなければなりません。 if b == 1
     c = 3;
else
     c = 4;
end
Whileループ while expression
statement_list
end
expressionは、スカラブール値にならなければなりません。 while i < 10
     a = cos(2*pi*i/10);
     i = i + 1;
end

行列演算

以下の表は、ベクトルおよび行列で値を指標付けまたは置換する場合に推奨される構文を示します。斜体の値は置換操作のみの構文を示します。行列は32ビットの符号付き整数で常に指定します。start:stop範囲を指定する場合は、範囲を定義し、スクリプトの個別のラインで値を変数に割り当てる代わりに、範囲を明示的に定義します。

MathScriptのベクトルおよび行列はLabVIEWのようにゼロではなく、1を起点とします。そのため、ベクトルまたは行列の最初の要素の指標は1です。また、行列要素に行と列の両方の指標ではなく単一の指標を指定すると、要素は線形および列方向の順序になります。たとえば、2x-2行列の場合、1番目の行および2番目の列の要素の指標は3になります。

演算 文法
ベクトルで単一の要素を置換または返します vector(index) = scalar bの2番目の要素を返します:

b = [4, -7, 0];
b(2);
ベクトルで要素の範囲を置換または返します vector(start_index:stop_index) = vector bの2番目と3番目の要素を置換します:

a = zeros(1, 2);
b = ones(1, 4);
b(2:3) = a;
行ベクトルですべての要素の行ベクトルを返します vector(:) a = ones(1, 4);
a(:);
行列で単一の要素を返します matrix(index) bの2番目の列と1番目の行で要素を返します:

b = [4, -2; 9, 5];
b(3);
行列で単一の要素を置換または返します matrix(column_index, row_index) = scalar bの2番目の列および2番目の行で要素を置換します:

a = 0;
b = ones(2);
b(2, 2) = a;
行列で単一の列を置換または返します matrix(:, column_index) = vector bの2番目の列を返します:

b = ones(2);
b(:, 2);
行列で単一の行を置換または返します matrix(row_index, :) = vector bの2番目の行を置換します:

a = zeros(1, 2);
b = ones(2);
b(2, :) = a;
行列で要素の範囲を返します matrix(start_index:stop_index) bの3番目~5番目の要素を返します:

b = [3, 7, -1; 4, 5, 0];
b(3:5);
行列の列で要素の範囲を返します matrix(start_index:stop_index, column_index) bの2番目の列の2番目~4番目の要素を返します:

b = [3, 7; -1, 4; 4, 5; 0, 9];
a = b(2:4, 2);
行列の行で要素の範囲を返します matrix(row_index, start_index:stop_index) bの2番目の行の2番目~4番目の要素を返します:

b = [3, 7, -1, 4; 4, 5, 0, 9];
a = b(2, 2:4);
行列で列の範囲を置換または返します matrix(:, start_column_index:stop_column_index) = matrix bの1番目および2番目の列を置換します:

a = zeros(3, 2);
b = ones(3);
b(:, 1:2) = a;
行列で行の範囲を置換または返します matrix(start_row_index:stop_row_index, :) = matrix bの1番目および2番目の行を置換します:

a = zeros(2, 3);
b = ones(3);
b(1:2, :) = a;
行列ですべての要素の行ベクトルを返します matrix(:) a = ones(2);
a(:);


この記事は役に立ちましたか。

役に立たなかった