除以范围值

时间:2014-02-12 10:01:56

标签: matlab

我对以下输出感到有点困惑:

>> 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 

3 个答案:

答案 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这是一个范围从12的向量。

1/3只是一个直接的分工。

1:24/3隐含1:8这是一个范围从18的向量。

1:24/3:2隐含1:8:2这是一个范围从12的向量,每个元素之间的差异为8。这只会让您1作为下一个可能的迭代,9将大于2

1:6/2 * 2暗示1:3*2暗示1:6。这是一个范围从16的矢量。

答案 2 :(得分:0)

您可能知道BODMAS规则中的

B Brackets首先

O Orders(即权力和平方根等)

DM Division and Multiplication(从左到右)

AS加法和减法(从左到右)

当修改为数学用法时,它增加了一些运算符,根据/优先级高于:

因此,您会得到错误的结果。你可以通过实现更多括号来检查这个东西。