我对以下输出感到有点困惑:
>> 1:6/3
ans =
1 2
但是
>> 1/3
ans =
0.3333
另外
>> 1:24/3
ans =
1 2 3 4 5 6 7 8
看起来MATLAB只输出在1-24范围内被3整除的数值?但为什么不为那些不能被3完全整除的人呢?
此外,我无法理解以下输出:
>> 1:24/3:2
ans =
1
类似地
>> 1:6/2 * 2
ans =
1 2 3 4 5 6
答案 0 :(得分:4)
这是一个operator precedence问题。 /
的优先级高于:
。
因此1:6/3
相当于1:(6/3)
,而您想要计算(1:6)/3
尝试用括号观察不同的结果:
>> (1:6)/3
>> (1:24)/3
>> (1:24)/(3:2)
>> ((1:6)/2)*2
答案 1 :(得分:4)
这很简单:
1:6/3
隐含1:2
这是一个范围从1
到2
的向量。
1/3
只是一个直接的分工。
1:24/3
隐含1:8
这是一个范围从1
到8
的向量。
1:24/3:2
隐含1:8:2
这是一个范围从1
到2
的向量,每个元素之间的差异为8
。这只会让您1
作为下一个可能的迭代,9
将大于2
。
1:6/2 * 2
暗示1:3*2
暗示1:6
。这是一个范围从1
到6
的矢量。
答案 2 :(得分:0)
您可能知道BODMAS规则中的
B Brackets首先
O Orders(即权力和平方根等)
DM Division and Multiplication(从左到右)
AS加法和减法(从左到右)
当修改为数学用法时,它增加了一些运算符,根据/
优先级高于:
因此,您会得到错误的结果。你可以通过实现更多括号来检查这个东西。