不清楚除法运算

Unclear division operation

我无法理解以下代码的确切含​​义:

1:5/3:5

据我了解,这可以翻译成

1.0e+00    2.0e+00    3.0e+00    4.0e+00    5.0e+00 / 3.0e+00    4.0e+00    5.0e+00

答案是:

1.0e+00    2.6e+00    4.3e+00

我的问题是:这里到底在做什么?

假设如下代码

a:b:c

它将打印a和c之间的值,步长为b。

所以,如果a=1; b=5/3; c=5,它会打印

1
1+1*5/3
1+2*5/3
...

只要数值小于或等于5

理解它的最好方法是查看 MATLAB 的 operator precedence

这里感兴趣的是:

  1. Multiplication (.*), right division (./), left division (.\), matrix multiplication (*), matrix right division (/), matrix left division (\)

...

  1. Colon operator (:)

所以 5/3colon operation 之前计算并用作增量。如果我们要执行 (1:5)/(3:5),那么行为将如您上面所猜测的那样。你会得到一个错误,因为维度与右矩阵除法不兼容。