【问题标题】:What is the equivalent to += in Matlab?Matlab中的+=等价于什么?
【发布时间】:2013-12-01 00:31:16
【问题描述】:

是否可以在 Matlab 中增加一个变量的值而不在语句的右侧重新声明它?

【问题讨论】:

  • 我不这么认为。你试过了吗?

标签: matlab operators


【解决方案1】:

AFAIK,MATLAB 中没有这样的东西。

这是understandable(请看 Steven Lord 的回答,帖子 11)。

那篇文章表明,由于 MATLAB 是基于数组的,因此这样的运算符充其量是模棱两可和不直观的。

【讨论】:

  • 我不确定您为什么声称它会模棱两可。 X op= e 表示 X = (X) op e,但只计算一次 X,就像在 C、C++、Java、C# 等中一样。Octave 支持这些的事实证明没有根本的歧义。
  • a([1 1 1]) 已经存在更大的歧义问题,因为它可以被解释为索引向量或逻辑向量。 a([1 2 1]) 是一个更好的例子,但只有与其他语言一致的解释。 (抱歉,我第一次查看该讨论时只阅读了 10 条帖子)
  • a([1 1 1]) 是明确的:它是数字索引,因为文字“1”在 Matlab 中是双精度数,并且 Matlab 不会在索引上下文中转换为逻辑。 a([true true true]) 将是逻辑索引。除此之外,Ben Voigt 的评论完全有道理:+= 是一个简单的句法速记。 Steven Lord 的帖子并没有真正解释它。 Lord 引用的奇怪边缘案例已经在 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 个。)添加 += 不会让情况变得更糟。
  • 达到评论字符数限制。真正的类似X = X op e 代码是a = 1; a([1 1 1]) = a([1 1 1]) + [2 3 4]。在 R2009b 中给我 5。
  • 史蒂夫·洛德给出的只是借口和混淆。八度做到了。这很愚蠢,尤其是当您使用良好的(pythonic)命名约定必须将其全部写出来时..
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多