matlab中accumarray的用法
时间: 2023-09-27 21:05:37 浏览: 92
save_gif_MATLABgif图_matlab保存动态图_savegif_
5星 · 资源好评率100%
Matlab 中的 accumarray 函数可以将源数组中的元素按照指定的方式聚合成一个新的数组,具体用法如下:
```
B = accumarray(subs, val)
B = accumarray(subs, val, sz)
B = accumarray(subs, val, sz, fun)
```
其中,subs 是一个 n 行 k 列的矩阵,表示源数组中每个元素的下标,val 是一个 n 行 1 列的向量,表示源数组中每个元素的值。sz 是聚合后的数组大小,可以是一个标量、一个行向量或一个列向量,fun 是一个函数句柄,表示聚合函数。
具体来说,如果 sz 是一个标量,则输出数组的大小为 [sz sz ... sz],即每个维度的大小都是 sz;如果 sz 是一个行向量,则输出数组的大小为 [sz(1) sz(2) ... sz(k)];如果 sz 是一个列向量,则输出数组的大小为 [sz(1); sz(2); ...; sz(k)]。
如果不指定聚合函数 fun,则默认使用 @sum 函数进行聚合。
例如,假设有一个源数组 A,其大小为 [m n],现在要求按照行进行聚合,将每行相加得到一个长度为 m 的列向量 B,可以使用以下代码:
```
B = accumarray((1:m)', A(:), [m 1]);
```
其中,(1:m)' 表示每个元素所在的行号,A(:) 表示将 A 展开成一个列向量,[m 1] 表示输出数组的大小为 m 行 1 列。
另外,accumarray 还支持自定义聚合函数 fun,例如计算均值可以使用 @mean 函数:
```
B = accumarray((1:m)', A(:), [m 1], @mean);
```
阅读全文