matlab學習筆記11_2高維數組操做 squeeze,ind2sub, sub2ind

一塊兒來學matlab-matlab學習筆記11

11_2 高維數組處理和運算

squeeze, ind2sub, sub2ind

以爲有用的話,歡迎一塊兒討論相互學習~Follow Me

squeeze

  • 刪除單維度--B=squeeze(A) B = squeeze(A)返回一個與A元素相同,但去掉了全部單維度的數組B。單例維度是指size(A,dim) = 1的任何維度。二維陣列不受squeeze函數的影響;若是A是一個行或列向量或標量(1×1)的值,那麼B = A。git

    從數組中去掉單維度

  • 建立一個(213)的數組,而後去掉單維度,使其成爲一個(2*3)的矩陣
>> 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

sub2ind

  • 將下標轉換爲線性索引github

    語法

  • linearInd = sub2ind(matrixSize, rowSub, colSub)
  • 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

ind2sub

  • 線性索引的下標索引

    語法

    [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 類。

二維矩陣

在這裏插入圖片描述

三維矩陣

在這裏插入圖片描述

降維輸出

  • 對 N 維矩陣調用 ind2sub 時,一般應在調用中提供 N 個輸出參數:矩陣的每一個維度一個參數。此示例顯示在對某個三維矩陣調用 ind2sub 時返回三個、兩個和一個輸出時發生的狀況。
  • 該矩陣爲 2×2×2 矩陣,而且線性索引從 1 到 8:
    • dims = [2 2 2];
    • indices = [1 2 3 4 5 6 7 8];
  • 具備三個輸出的 ind2sub 調用返回 2×2×2 矩陣的預期下標:

    [rowsub colsub pagsub] = ind2sub(dims, indices)
    rowsub =
    1 2 1 2 1 2 1 2
    colsub =
    1 1 2 2 1 1 2 2
    pagsub =
    1 1 1 1 2 2 2 2
    在這裏插入圖片描述
  • 若是您僅指定兩個輸出(行和列),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
在這裏插入圖片描述

  • 若是您指定一個輸出(行),ind2sub 將從矩陣中刪除第二個維度和第三個維度,並改成返回一個一維的 1×8 矩陣的下標:

[rowsub] = ind2sub(dims, indices) rowsub = 1 2 3 4 5 6 7 8

相關文章
相關標籤/搜索