gpt4 book ai didi

arrays - 稀疏向量之和 : bug or feature?

转载 作者:行者123 更新时间:2023-12-05 00:42:28 24 4
gpt4 key购买 nike

我最近在 MATLAB R2022a 中偶然发现了以下行为:

>> a = sparse(1,2,1)
a =
(1,2) 1

>> b = sparse(2,1,18)
b =
(2,1) 18

>> a+b
ans =
(2,1) 18
(1,2) 1
(2,2) 19

值 19 的 (2,2) 元素的存在非常令人费解。直观地说,我希望得到一个零(无元素)或一个错误,表明向量的大小不兼容。我在文档中找不到这种行为的解释。

那么,这是错误还是功能?

最佳答案

这是由于隐式广播和预期行为,也适用于 full() 数组。比较:

bsxfun(@plus, [0 1], [0; 18])

ans =

0 1
18 19

(我运行的是 R2007b,所以需要 bsxfun() 而不是隐式广播)。

大小不等的向量会被广播(“扩展”)成合适的大小以进行相加,参见 e.g. this blog post进行深入的解释。

详细地编写我们的玩具示例

a = [0 1]
b = [ 0
18]

a + b = [0 1] + [ 0
18]

% Is broadcast to
= [0 1 [ 0 0
0 1] + 18 18]

% element wise addition
= [ 0 1
18 19]

关于arrays - 稀疏向量之和 : bug or feature?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73715150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com