matlab陣列語法(2)
阿新 • • 發佈:2019-02-01
accumarray():
- A = accumarray(subs,val)
>> subs = [1 2 4 2 4 4 4 4]
>> accumarray(subs',1) % subs必須是列向量
ans =
1; 2; 0; 5 % 返回結果為:subs裡面有幾個‘1’,‘2’,‘3’,‘4’
>> subs=[3 1 1 9 7 4 10 1] >> val =[5 4 8 8 2 5 5 7] >> accumarray(subs',val) % subs必須變成列向量 ans = 19 0 5 5 0 0 2 0 8 5 % subs(1)=3,只出現一次,則ans(3)等於subs(3)中對應位置的值 % subs(2)=subs(3)=subs(8)=1,則ans(1)等於subs中出現1的 % val對應位置元素相加
deal():
- [y1,y2,...,yn] = deal(x) // 分別把x賦值給y1,y2,...,yn
- [y1,y2,...,yn] = deal(x1,...,xn) // y1=x1,x2=y2,...,xn=yn
factor():
- f = factor(n) // 返回一個行向量,其元素是 n 的約數
>> f = factor(200)
>> f
2 2 2 5 5
pdist():
- D = pdist(X)
// 計算X中各對行向量的相互距離(假設X是一個 m-by-n的矩陣)。D是一個長為 m(m-1)/2的行向量,可以這樣理解D的生成:首先生成一個X的距離方陣,由於該方陣是對稱的,且對角線上的元素為0,所以取得此方陣的下三角元素,按照matlab中矩陣的按列儲存原則,此下三角個元素的索引排列即為(2,1),(3,1),。。。,(m,1),...,(m,m-1)。可以用命令squareform(D)將此行向量轉換為原距離矩陣。(squareform函式是專門幹這事的,其逆變換也是squareform)。
squareform():
- Z = squareform(y) // y是一個向量,此函式經常和qdist配套使用。
>> y = 1 2 3 4 5 6
>> X = squareform(y)
>> X
0 1 2 3
1 0 4 5
2 4 0 6
3 5 6 0
- y = squareform(Z) // 上面函式的反過程
>> Z =
0 1 2 3
1 0 4 5
2 4 0 6
3 5 6 0
>> y = squareform(Z)
>> y
1 2 3 4 5 6