MATLAB:表达式中的“大于”符号是什么:(1-X)。*(X> 1)是什么意思?
X是列向量,理论上X的每个元素都在0到1的范围内。在数值上由于精度有限,元素可能略微超过1.0,因此这可能是一种条件或约束。
有什么想法吗?
答案 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