刪除單維度--B=squeeze(A) B = squeeze(A)返回一個與A元素相同,但去掉了全部單維度的數組B。單例維度是指size(A,dim) = 1的任何維度。二維陣列不受squeeze函數的影響;若是A是一個行或列向量或標量(1×1)的值,那麼B = A。git
>> y = rand(2,1,3) z = squeeze(y) y(:,:,1) = 0.8147 0.9058 y(:,:,2) = 0.1270 0.9134 y(:,:,3) = 0.6324 0.0975 z = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975
將下標轉換爲線性索引github
linearInd = sub2ind(arraySize, dim1Sub, dim2Sub, dim3Sub, ...)數組
linearInd = sub2ind(matrixSize, rowSub, colSub) 爲大小是 matrixSize 的矩陣返回與行和列下標 rowSub 和 colSub 等效的線性索引。matrixSize 輸入是一個包含 2 個元素的向量,該向量以 * [nRows, nCols] 形式指定矩陣中的行和列數。rowSub 和 colSub 輸入是正整數標量或向量,指定矩陣的一個或多個行-列下標對組。函數
linearInd = sub2ind(arraySize, dim1Sub, dim2Sub, dim3Sub, ...) 爲大小是 arraySize 的 N 維數組的每一個維度返回與指定的下標等效的線性索引。arraySize 輸入是包含 n 個元素的向量,指定數組中的維數。dimNSub 輸入是正整數標量或向量,指定矩陣的一個或多個行-列下標。學習
全部下標輸入能夠是 single、double 或任意整數類型。linearInd 輸出始終都爲類 double。code
若是須要,sub2ind 假定未指定的後續下標是 1。blog
將三維數組的索引轉換爲單個線性索引。 建立數組 A,並肯定對應於 (2,1,2) 位置的元素的線性索引。 A = rand(3,4,2); linearInd = sub2ind(size(A),2,1,2) linearInd = 14 檢查這兩個索引版本是否引用 A 的同一元素。 A(2,1,2) ans = 0.4854 A(14) ans = 0.4854
線性索引的下標索引
[I,J] = ind2sub(siz,IND)
[I1,I2,I3,...,In] = ind2sub(siz,IND)圖片
ind2sub 函數肯定與數組的單個索引對應的等效下標值。get
[I,J] = ind2sub(siz,IND) 返回矩陣 I 和 J,其中包含與矩陣 IND(大小爲 siz 的矩陣)中的每一個線性索引對應的對等行下標和列下標。siz 是一個包含 ndim(A) 個元素(此示例爲 2 個元素)的向量,其中 siz(1) 爲行數,siz(2) 爲列數。
注意
對於矩陣,[I,J] = ind2sub(size(A),find(A>5)) 與 [I,J] = find(A>5) 返回相同的值。
[I1,I2,I3,...,In] = ind2sub(siz,IND) 返回 n 個下標數組 I1,I2,...,In,其中包含等效於 IND(大小爲 siz 的數組)的多維數組下標。siz 是一個指定每一個數組維度大小的 n 元素向量。
IND 輸入能夠是 single、double 或任意整數類型。輸出始終屬於 double 類。
具備三個輸出的 ind2sub 調用返回 2×2×2 矩陣的預期下標:
[rowsub colsub pagsub] = ind2sub(dims, indices)若是您僅指定兩個輸出(行和列),ind2sub 仍將返回每一個指定索引的下標,但會從矩陣中刪除第三個維度,並改成返回一個二維的 2×4 矩陣的下標:
[rowsub colsub] = ind2sub(dims, indices)
rowsub =
1 2 1 2 1 2 1 2
colsub =
1 1 2 2 3 3 4 4
[rowsub] = ind2sub(dims, indices) rowsub = 1 2 3 4 5 6 7 8