MATLAB:表达式中的“大于”符号:(1-X).*(X>1) 是什么意思?
X 是一个列向量,理论上 X 的每个元素都在 0 到 1 的范围内。在数值上,由于精度有限,一个元素可能会稍微超过 1.0,因此这可能是一种条件或约束。
有任何想法吗?
MATLAB:表达式中的“大于”符号:(1-X).*(X>1) 是什么意思?
X 是一个列向量,理论上 X 的每个元素都在 0 到 1 的范围内。在数值上,由于精度有限,一个元素可能会稍微超过 1.0,因此这可能是一种条件或约束。
有任何想法吗?
在您描述的上下文中,它本质上是“选择”大于 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开始的位置。
显然,如果 X 的任何值都不大于 1,那么结果将始终全为零。
对于大于 1 的每个元素,表达式(X > 1)
返回(逻辑 '1'),否则返回 (逻辑 '0')。因此,会生成一个布尔向量(与 相同大小),其中包含 '1',其中对应的元素大于 1。我强烈建议您更加熟悉MATLAB 运算符。true
false
X > 1
X
X
至于表达式的其余部分:
(1 - X)
简单地返回一个与 维数相同的向量,其中每个元素都是从 1X
中减去相应元素的结果。X
.*
是逐元素乘法,因此最终结果是一个向量(与 具有相同的维度),如果 X i >1,则X
第 i 个元素等于 (1 - X i ),否则为 0。
>> X = [-1 4 0 2 -3];
>> X > 1
ans =
0 1 0 1 0
>> 1 - X
ans =
2 -3 1 -1 4
>> (1 - X) .* (X > 1)
ans =
0 -3 0 -1 0