不清楚除法运算
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。
这里感兴趣的是:
- Multiplication
(.*)
, right division (./)
, left division (.\)
, matrix multiplication (*)
, matrix right division (/)
, matrix left
division (\)
...
- Colon operator
(:)
所以 5/3
在 colon
operation 之前计算并用作增量。如果我们要执行 (1:5)/(3:5)
,那么行为将如您上面所猜测的那样。你会得到一个错误,因为维度与右矩阵除法不兼容。
我无法理解以下代码的确切含义:
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。
这里感兴趣的是:
- Multiplication
(.*)
, right division(./)
, left division(.\)
, matrix multiplication(*)
, matrix right division(/)
, matrix left division(\)
...
- Colon operator
(:)
所以 5/3
在 colon
operation 之前计算并用作增量。如果我们要执行 (1:5)/(3:5)
,那么行为将如您上面所猜测的那样。你会得到一个错误,因为维度与右矩阵除法不兼容。