accumarray

accumarray是一個函式,可以用來向量分量累計到矩陣不同元素中。

基本介紹

簡介,例如,

簡介

accumarray是MATLAB的一個函式,用於把一個向量中的分量分別累計入一個矩陣的不同元素中。
最基本的用法是:A=accumarray(subs, val);其中val是源向量,它的分量按序與subs的行向量對應。subs是一個矩陣, 稱作“索引矩陣”(index matrix),它的行向量自上而下與val的分量一一對應,即val[1]=1對應subs[1,:]=[1,2],val[2]=2對應subs[2,:]=[1,1],val[3]=3對應subs[3,:]=[2,1],val[4]=4對應subs[4,:]=[1,1],且行向量的值為結果矩陣中將要累計入的位置。

例如

val = [1, 2, 3, 4];
subs=[ 1,2; 1,1; 2,1; 1,1];
A=accumarray(subs,val)
A =
6 1
3 0
根據這個例子來說明計算方法:
val的第1個分量,放入A中的位置為subs(1,:),即A[1,2]+=val[1]
val的第2個分量,放入A中的位置為subs(2,:),即A[1,1]+=val[2]
val的第3個分量,放入A中的位置為subs(3,:),即A[2,1]+=val[3]
val的第4個分量,放入A中的位置為subs(4,:),即A[1,1]+=val[4]
最終:A[1,1]=val[2]+val[4]=6,同理A[1,2]=val[1]=1,A[2,1]=val[1]=3,A[2,2]=val[1]=0。
這個例子中,subs的4個行向量表明了val的4個分量分別累計入結果矩陣的(1,2)、(1,1)、(2,1)、(1,1)元素。
val可以是一個標量。累計時把該標量值反覆計入。
subs也可以採用元組形態:{subs1, subs2, ...}, 其中的subs1, subs2等為列向量,合起來形成索引矩陣(index matrix).
accumarray的最完整的用法為:accumarray(subs,val,sz,fun,fillval,issparse),其中參數sz指明結果矩陣的維數;fun為累計計算時的運算函式,默認為sum(),To specify another function fun, use the @ symbol
(e.g., @max);fillval為結果矩陣的元素沒有累計的情況下的預設值,默認為0;issparse指出結果矩陣是否採用稀疏矩陣

相關詞條

熱門詞條

聯絡我們