"大于"是什么?表达式中的符号:(1-X)。*(X> 1)是什么意思?

时间:2013-03-24 13:01:12

标签: matlab

MATLAB:表达式中的“大于”符号是什么:(1-X)。*(X> 1)是什么意思?

X是列向量,理论上X的每个​​元素都在0到1的范围内。在数值上由于精度有限,元素可能略微超过1.0,因此这可能是一种条件或约束。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在您描述的上下文中,它实质上是“选择”大于1的元素并从1中减去它们;结果中的所有其他元素(X <= 1)中的所有元素将为0,因为它们已经从X > 1的结果乘以零。这是一个例子:

>> X = [0 0.5 1 1.5 2];
>> X > 1

ans =

 0     0     0     1     1

>> (1 - X)

ans =

1.0000    0.5000         0   -0.5000   -1.0000

>> (1 - X) .* (X > 1)

ans =

     0         0         0   -0.5000   -1.0000

在最后的结果中,第一个结果中的三个零与中间结果中的前三个值相乘(元素方向),并且两个值已经乘以中间结果中的最后两个值。以这种方式,它已经有效地选择了(1-X)在X> 1的位置的结果。 1开始。

显然,如果X的值从未大于1,那么结果将始终为全零。

答案 1 :(得分:2)

表达式(X > 1)为每个大于1的元素返回true(逻辑'1'),否则返回false(逻辑'0')。因此,X > 1生成一个布尔向量(与X大小相同),其中包含'{1},其中X中的对应元素大于1.我强烈建议您更熟悉MATLAB operators

至于表达的其余部分:

(1 - X)只返回与X尺寸相同的向量,其中每个元素都是从{1}中减去相应元素的结果。

X是逐元素乘法,因此最终结果是一个向量(与.*相同的维度),其中第i个元素等于(1 - X i )如果X i &gt; 1,则为0。

实施例

X