适用于实时应用程序的MathScript语法(MathScript RT模块)

LabVIEW 2012 MathScript RT模块帮助

版本日期:June 2012

产品编号:373123C-0118

»查看产品信息
下载帮助
(仅限Windows)

经NI测试,按照本文介绍的范例、要求,以及其它相关规范使用下列LabVIEW MathScript语法,能确保程序执行时间的确定性。应用程序要求确定性执行时,可在MathScript节点中使用这些语法编写脚本和用户定义函数,然后在实时应用中使用该MathScript节点

常用运算

下表列出了MathScript中常用运算的推荐语法。

结构 语法 要求 范例
二元运算 a operator b operator是数值运算符,例如,+-.*./.\.^<=>=<>==~=

ab是方向相同且包含相同数目元素的向量,或维数相等的矩阵。如果一个输入是标量,另一个输入可以是标量、向量或矩阵。

ab只能是数值数据类型
[1, 2] + [3, 4];
a operator b operator是逻辑运算符,例如,==~=&&||&|

ab是方向相同且包含相同数目元素的向量,或维数相等的矩阵。如果一个输入是标量,另一个输入可以是标量、向量或矩阵。

ab只能是布尔值。
[2, 3; 2, 2] ~= [3, 3; 2, 3];
a * b ab必须是双精度浮点数或双精度浮点复数。 一个输入是标量或向量,另一个输入是标量、向量或矩阵。 2 * [2; 3];
一个输入是n × m的矩阵,另一个输入是m × 1的列向量。 [1, 4; 2, 3; 0, 3] * [1; 2];
一个输入是1 × n的行向量,另一个输入是n × m矩阵。 [1, 2] * [1, 3, 5; 2, 4, 6];
一个输入是m × n矩阵,另一个输入是n × r矩阵。 [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 constant是MathSript中产生常量的函数,例如,zerosonestruefalse,以及constants类下的函数。 pi;
constant(n) n是一个整数常量,constant是产生常量的MathScript函数。 a = true(3);
constant(n, m) nm是整数常量,constant是产生常量的MathScript函数。 z = zeros(2, 3);
Literal literal literal是一个字符串常量或任何数值类型的常量。 a = 4;

b = 'string';
矩阵定义 [a1, a2, ..., an] a的值必须是任何数值类型的标量,或NaNInf这类常量。如a是向量或矩阵,可索引a中的标量值,以在矩阵中使用。 a = [1, 2, 0];

b = [0; Inf];

a的值必须是任何数值类型的标量,或NaNInf这类常量。 a = [1, 2, 0; 6, 1.5, 3];
范围定义 start:stop startstop是整型或浮点型标量。如果startstop不是常量,在范围定义之后的脚本执行中,start:stop的长度应该固定。 b = 2:20;
start:step:stop startstepstop是整型或浮点型的标量。如果startstepstop不是常量,在范围定义之后的脚本执行中,start:step:stop的长度应该固定。 b = 2:2:20;

循环和语句

下表列出了MathScript中循环和语句的推荐语法。

结构 语法 要求 范例
For循环 for iter = expression
statement_list
end
statement_listexpression,由本文以及其它规范中推荐使用的运算、语法或内置函数组成。 expression的结果必须是数值或布尔标量、向量、矩阵。 for i = [3, 6, 9]
     a = sin(2*pi*i/10);
end
for iter = start:stop
statement_list
end
startstop是整型或浮点型标量。 for i = 1:10
     a = sin(2*pi*i/10);
end
for iter = start:step:stop
statement_list
end
startstepstop是整型或浮点型的标量。 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中的向量和矩阵的索引从1开始,而LabVIEW中是从0开始。因此,向量或矩阵中的第一个元素的索引为1。用一个索引来指定矩阵中的元素,而不是同时使用行索引和列索引,索引按先列后行的顺序进行。例如,一个2 × 2矩阵,第一行第二列的元素索引为3。

操作 语法 范例
返回或替换向量中的一个元素 vector(index) = scalar 返回b向量中的第二个元素:

b = [4, -7, 0];
b(2);
返回或替换向量中某个范围的元素 vector(start_index:stop_index) = vector 替换b向量中的第二个和第三个元素:

a = zeros(1, 2);
b = ones(1, 4);
b(2:3) = a;
将行向量转为列向量 vector(:) a = ones(1, 4);
a(:);
返回矩阵中的一个元素 matrix(index) 返回b矩阵中第一行第二列的元素:

b = [4, -2; 9, 5];
b(3);
返回或替换矩阵中的一个元素 matrix(column_index, row_index) = scalar 替换b矩阵中第二行第二列的元素:

a = 0;
b = ones(2);
b(2, 2) = a;
返回或替换矩阵中的一列 matrix(:, column_index) = vector 返回b矩阵的第二列:

b = ones(2);
b(:, 2);
返回或替换矩阵中的一行 matrix(row_index, :) = vector 替换b矩阵的第二行:

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-4个元素:

b = [3, 7; -1, 4; 4, 5; 0, 9];
a = b(2:4, 2);
返回矩阵行中某个范围的元素 matrix(row_index, start_index:stop_index) 返回b矩阵第二行中第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矩阵第一列和第二列:

a = zeros(3, 2);
b = ones(3);
b(:, 1:2) = a;
返回或替换矩阵中某个范围的行 matrix(start_row_index:stop_row_index, :) = matrix 替换b矩阵第一行和第二行:

a = zeros(2, 3);
b = ones(3);
b(1:2, :) = a;
将矩阵转为列向量 matrix(:) a = ones(2);
a(:);

文章是否对您有帮助?

没有帮助