Matlab - Accumarray 混淆?
Matlab - Accumarray confusion?
我只是不明白 accumarray 的具体工作原理。我查了官方matlab documentation,还是没能完全理解。
如果是这样,其中:
subs = [1
3
4
3
4]
val = 101:105';
accumarray(subs,val) =
[101
0
206
208]
我知道它是 A(1)= 101,A(2)= 0,A(3)= 102+104,A(4)= 103+105
但如果它是这样的:
subs = [1 1
2 2
3 2
1 1
2 2
4 1]
val = 101:106';
accumarray(subs,val) =
[205 0
0 207
0 203
106 0]
我不明白这个方法是如何工作的....我有点得到 A(1) = 101+104,然后 A(2) = 102+105。
但为什么会显示在第二列?另外,为什么 [3 2] 行不包括在计算中?
我知道这是一个非常简单的问题,但这是我第一次使用 Matlab.. 任何帮助将不胜感激,谢谢!!
如 accumarray 文档中所述:
考虑调用如下函数:
A = accumarray(subs,val)
The values in each row of the m-by-n matrix subs define an
n-dimensional subscript into the output, A.
因此,在您的例子中,由于 subs
是一个 Something x 2
数组,它的每一行都被视为指向输出 A 的下标,其大小为 4x2
,因为每列中的最大值分别为 4 和 2。
因此,如果我们将subs
分解成相似的行,即相似的下标,我们看到有2行指向相同的坐标(1,1)和(2,2)。只有 1 个指向 (4,1) 和 1 个指向 (3,2)。因此,我们希望输出 A
仅在这些坐标处具有累加值:
(1,1)
(2,2)
(3,2)
(4,1)
正是如此:
A =
205 0
0 207
0 103
106 0
是不是更清楚了?
我只是不明白 accumarray 的具体工作原理。我查了官方matlab documentation,还是没能完全理解。
如果是这样,其中:
subs = [1
3
4
3
4]
val = 101:105';
accumarray(subs,val) =
[101
0
206
208]
我知道它是 A(1)= 101,A(2)= 0,A(3)= 102+104,A(4)= 103+105
但如果它是这样的:
subs = [1 1
2 2
3 2
1 1
2 2
4 1]
val = 101:106';
accumarray(subs,val) =
[205 0
0 207
0 203
106 0]
我不明白这个方法是如何工作的....我有点得到 A(1) = 101+104,然后 A(2) = 102+105。
但为什么会显示在第二列?另外,为什么 [3 2] 行不包括在计算中?
我知道这是一个非常简单的问题,但这是我第一次使用 Matlab.. 任何帮助将不胜感激,谢谢!!
如 accumarray 文档中所述:
考虑调用如下函数:
A = accumarray(subs,val)
The values in each row of the m-by-n matrix subs define an n-dimensional subscript into the output, A.
因此,在您的例子中,由于 subs
是一个 Something x 2
数组,它的每一行都被视为指向输出 A 的下标,其大小为 4x2
,因为每列中的最大值分别为 4 和 2。
因此,如果我们将subs
分解成相似的行,即相似的下标,我们看到有2行指向相同的坐标(1,1)和(2,2)。只有 1 个指向 (4,1) 和 1 个指向 (3,2)。因此,我们希望输出 A
仅在这些坐标处具有累加值:
(1,1)
(2,2)
(3,2)
(4,1)
正是如此:
A =
205 0
0 207
0 103
106 0
是不是更清楚了?