matlab中accumarray函式詳解
先看看subs和val的具體內容
subs = [1 1 1; 2 1 2; 2 3 2; 2 1 2; 2 3 2];
subs =
1 1 1
2 1 2
2 3 2
2 1 2
2 3 2
val = (101:105)'
val =
101102
103104
105val的元素個數與subs的行數是一致的。
a = accumarray(subs, val)的實現過程分成2步。
第一步是把val中的元素,按照subs對應行所給出的下標放到乙個新的cell矩陣b中(cell是為了方便解釋,也就是說b矩陣中的每個位置可以放入多個數值),注意,subs的值是b的下標,不是val的。舉例來說,subs第一行[ 1 1 1],意思就是把val中第乙個元素(val(1))放入到b(1,1,1)的位置,依次類推,val(2)放入到b(2 1 2),val(3)放入到b(2 3 2),val(4)放入到b(2 1 2),val(5)放入到b(2 3 2)。此時,可以看到b(1,1,1)中有1個數(val(1));b(2 1 2)有2個數(val(2),val(4));b(2 3 2)也有2個數(val(3),val(5))。
第二步,把b中每個單元中的數分別累加,並放入到a的對應位置。
注:accumarray預設的是把每個單元中的數累加,因為對每個單元中的數的預設處理函式是sum。可以通過a = accumarray(subs,val,,@fun)的呼叫格式來指定其他的處理函式,比如說mean。對指定的fun函式的要求是,接受列向量輸入,輸出單個的數值型,、字元型或邏輯型變數。
a的維數與b相同,a中的元素預設為零。a的大小為max(subs(1))×max(subs(2))×max(subs(3))...
因此,a(1,1,1)=val(1)=101;
a (2 , 1 , 2)=val(2)+val(4)=102+104=206;
a (2, 3 , 2)=val(3)+val(5)=1-03+105=208,
a的其他位置都為零。輸出a就得到
a(:,:,1) =
101 0 0
0 0 0
a(:,:,2) =
0 0 0
206 0 208
很顯然,a的維數與subs的列數相等。
a = accumarray(subs, val)
a = accumarray(subs,val,sz)
sz 可以用來指定a大小,但是不能小於a = accumarray(subs, val)得到的a的大小。比如a = accumarray(subs, val)的到a是乙個3×4的二維矩陣,那麼sz應當為乙個包含2個元素的向量sz=[m1,m2] (sz向量的長度和a的維數相等),其中,m1大於等於3,m2大於等於4. 但是,當得到的a是乙個p×1的一維向量時,sz=[m,1],m大於等於p。另外,sz可以賦值為空,表示由函式自動決定a的大小。
a = accumarray(subs,val,sz,fun)
fun可以指定專門的處理函式,預設的處理函式為sum
a = accumarray(subs,val,sz,fun,fillval)
fillval指定a中元素的預設值。可以等於nan
a = accumarray(subs,val,sz,fun,fillval,issparse)
isspares選擇a是否使用稀疏矩陣的格式
a = accumarray(, val,...)
,等同於a = accumarray(subs, val,...),此時,subs=[subs1, subs2, ...]或者=[subs1;subs2; ...]
Matlab 在Matlab中如何畫圓
rectangle函式功能 建立二維矩形物件。1.1 rectangle position x,y,w,h 其中以x,y為起始座標開始,畫出長為w,寬為h的矩形。1.2 rectangle curvature a,b 指定矩陣邊的曲率,可以使它從矩形到橢圓不同變化,水平曲率x為矩形寬度的分數,是沿著...
Matlab中的括號()
matlab中經常會用到括號去引用某array或者是cel l的內容,但三者有什麼具體區別呢?中括號用來構建向量 vectors 或者是矩陣 matrices 如 6.9 9.64 sqrt 1 就是乙個有三個元素的向量。11 12 13 21 22 23 是乙個二乘三的矩陣.分號 用來結束一行。中...
MATLAB中fopen fprintf函式的用法
matlab中fopen函式在指定檔案開啟的例項如下 1 fopen 開啟檔案,賦予檔案代號。語法1 fid fopen filename,permission 用指定的方式開啟檔案 fid n n是正整數 表示檔案開啟成功,檔案代號是n.fid 1 表示檔案開啟不成功。fid在此次檔案關閉前總是有...