返回信息流一个非常奇怪的matlab运算优先级问题,求大神指点。
如下:似乎[]里+和操作符连上时就变成了连接作用,有个空格就变成了加法。matlab是+优先级高于:的。真不matlab设计机制是啥样子的,有懂的大神指点下吧。非常感谢!
x=[1 2 3 4 5 6 7 8 9 10]
x =
1 2 3 4 5 6 7 8 9 10
K>> x([2+1:end])
ans =
3 4 5 6 7 8 9 10
K>> x([2 +1:end])
ans =
2 1 2 3 4 5 6 7 8 9 10
K>> x([2+ 1:end])
ans =
3 4 5 6 7 8 9 10
K>> x([2 + 1:end])
ans =
3 4 5 6 7 8 9 10
K>> x(2+1:end)
ans =
3 4 5 6 7 8 9 10
K>> x(2+ 1:end)
ans =
3 4 5 6 7 8 9 10
K>> x(2 +1:end)
ans =
3 4 5 6 7 8 9 10
K>> x(2 + 1:end)
ans =
3 4 5 6 7 8 9 10
K>> x([2 + 3 + 4])
ans =
9
K>> x([2 +3 +4])
ans =
2 3 4
K>> x(2 + 3 + 4)
ans =
9
K>> x(2 +3 +4)
ans =
9
上一封 下一封
这是一条镜像帖。来源:北邮人论坛 / matlab / #11734同步于 2015/7/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
一个非常奇怪的matlab运算优先级问题,求大神指点
lcb
2015/7/23镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
首先要搞清楚的是matlab中[]是定义矩阵的,()是用来优先运算一般的表达式的;
x([2+1:end])是按运算符运算顺序来的,就是x([3:end]);
x([2 +1:end])是+运算符之前是空格,所以是正号,而不是2加1;
x([2+ 1:end])和x([2 + 1:end]),+运算符都是加号,不是正号,所以和x([2+1:end])是一样的;
x(2+1:end),x(2+ 1:end),x(2 +1:end),x(2 + 1:end)就是一般的运算表达式,和x(2+1:end)都一样的
x([2 + 3 + 4])里面的+运算符都是加号,按顺序加就行了; x([2 +3 +4])这个里面是正号,不是加号,
x(2 + 3 + 4)和x(2 +3 +4)也是一般的表达式,所以都是9
【 在 hx0502001 的大作中提到: 】
: 首先要搞清楚的是matlab中[]是定义矩阵的,()是用来优先运算一般的表达式的;
: x([2+1:end])是按运算符运算顺序来的,就是x([3:end]);
: x([2 +1:end])是+运算符之前是空格,所以是正号,而不是2加1;
: ...................
乖乖你好赞哦。
拜过大神!
【 在 hx0502001 的大作中提到: 】
: 首先要搞清楚的是matlab中[]是定义矩阵的,()是用来优先运算一般的表达式的;
: x([2+1:end])是按运算符运算顺序来的,就是x([3:end]);
: x([2 +1:end])是+运
: .........
发自「贵邮」