对于涉及整数的运算,是一个逻辑值向量,它等于一个整数向量,取适当的值0和1吗?
如果我对逻辑对象而不是整数对象进行计算或应用函数,我会遇到意想不到的后果吗?
the*_*alk 10
这实际上取决于具体情况,但与编程一样:变量的显式转换优于隐式转换!
这是一个简单的例子,你可以看到差异:
x = [0 1 0 1 0] %// 0 1 0 1 0
y = logical(x) %// 0 1 0 1 0
y(y) = 5 %// 0 1 0 1 0
x(y) = 5 %// 0 5 0 5 0
y(x) = 5 %// error
x(x) = 5 %// error
Run Code Online (Sandbox Code Playgroud)
因此,当指向索引左侧的索引变量时,确定输出的类型.因此,只要您能确保输出总是加倍,就不应该遇到问题.
看看这个更复杂的例子:
z = double([0 0 0 0 0])
z(y) = x(y) + y(y)
Run Code Online (Sandbox Code Playgroud)
第一个加数是双,第二个是合乎逻辑的.但由于它们是算术运算的一部分,因此两个加法处理都是双重的.同样z是双倍,结果是双倍.
z =
0 2 0 2 0
Run Code Online (Sandbox Code Playgroud)
现在考虑以下内容:
z = logical([0 0 0 0 0])
z(y) = x(y) + y(y)
Run Code Online (Sandbox Code Playgroud)
再次,第一个加数是双,第二个是合乎逻辑的.他们再次受到双重待遇.但这z是合乎逻辑的,所以实际上双重结果被转换为逻辑.
z =
0 1 0 1 0
Run Code Online (Sandbox Code Playgroud)