【问题标题】:What to call (1 by n) plus (n by 1) operation?什么叫(1乘n)加(n乘1)操作?
【发布时间】:2017-05-05 20:56:36
【问题描述】:

我偶然发现了加法运算符的意外行为。

a=[1 2 3]; 
b=[5; 7; 11];
a+b

生产

ans =

     6     7     8 % a(1)+b(1) a(1)+b(2) a(1)+b(3)
     8     9    10 % a(2)+b(1) a(2)+b(2) a(2)+b(3)
    12    13    14 % a(3)+b(1) a(3)+b(2) a(3)+b(3)

此行为可能属于文档中的Add a Vector to a Matrix 示例。

创建一个数组 A,并向其中添加一个列向量。向量是 将其视为与 A 大小相同的矩阵,因此每个 向量中的元素被添加到 A 中的一行。

虽然,我的示例中的b 不能被视为与a 相同的大小。两个向量必须重复。

当我向其他人描述这种行为时,我可以称之为什么?Matrix Addition 的定义都不合适。 Vector addition 也有不同的定义。我能想到的最好的结果是“笛卡尔积中元素的总和”。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这称为二进制单例扩展。从 R2016b 开始,MATLAB 使用标准运算符自动执行此操作。详情请见bsxfun

    【讨论】:

    • 如果我想要这种行为并且我不知道它存在,我想 bsxfun 是我会看的地方。但是,如果您偶然发现这种行为并试图解释它,这根本不是一个直观的地方。 :P
    • 也称为隐式扩展...这是来自 Mathworks blogs.mathworks.com/loren/2016/11/10/…的博客文章
    • 糟糕,这是原件。 blogs.mathworks.com/loren/2016/10/24/…
    • 在其他语言中也称为 broadcast(Octave、Numpy)
    猜你喜欢
    • 2020-10-25
    • 2021-02-08
    • 2011-01-29
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多