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可以是一個標量。累計時把該標量值反覆計入。