在Matlab中相当于+ =的是什么?

Koz*_*huk 22 matlab operators

在Matlab中是否可以增加变量的值而不在语句的右侧重新设置它?

zw3*_*324 19

AFAIK,在MATLAB中没有这样的东西.

这是可以理解的(看看Steven Lord的回答,第11篇).

该帖子表明,由于MATLAB是基于数组的,因此这种运算符最多是模糊且不直观的.

  • 我不确定你为什么声称它会含糊不清.`X op = e`意味着`X =(X)op e`,但只评估`X`一次,就像在C,C++,Java,C#等中一样.Octave支持这些的事实就证明了没有根本的模棱两可. (7认同)
  • `a([1 1 1])`是明确的:它是数字索引,因为文字"1"在Matlab中是double,而Matlab不会在索引上下文中转换为逻辑.`a([true true true])`将是逻辑索引.除此之外,Ben Voigt的评论完全有道理:"+ =`是一种简单的句法速记.史蒂文罗德的帖子并没有真正解释它; 主要的边缘情况引用已经在Matlab中出现了`X =(X)op e`形式.例如`a = 1; a([1 1 1])= a([1 1 1])+ a(1);`已经有行为.或者尝试`a = 1; a([1 1 1])= a(1)+ [2 3 4];`.(它给了我5.)添加"+ ="不会使这更糟糕. (3认同)

Ben*_*igt 7

MatLab没有复合赋值,但开源克隆Octave有.

资料来源:http://hyperpolyglot.org/numerical-analysis