matlab中的sub2ind函式

2021-09-17 18:27:58 字數 1483 閱讀 9790

在matlab中,矩陣的儲存是按列優先,sub2ind函式將矩陣中指定元素的行列下標轉換成儲存的序號,即線性索引號。下面,我們舉例子進行說明。

1 建立乙個3*4*2的矩陣

rng(0,'twister');   % initialize random number generator.

a = rand(3, 4, 2)

a(:,:,1) =

0.8147    0.9134    0.2785    0.9649

0.9058    0.6324    0.5469    0.1576

0.1270    0.0975    0.9575    0.9706

a(:,:,2) =

0.9572    0.1419    0.7922    0.0357

0.4854    0.4218    0.9595    0.8491

0.8003    0.9157    0.6557    0.9340

將元素a(2, 1, 2)的下標轉換成線性索引號

linearind = sub2ind(size(a), 2, 1, 2)

linearind =

14a(2, 1, 2)            a(14)

ans =                 and =

0.4854               0.4854

2 針對這種三維的矩陣,如果預設第三個下標,預設為1。

linearind = sub2ind(size(a), 2, 4)

ans =

11linearind = sub2ind(size(a), 2, 4, 1)

ans =

113 假如要轉換多個元素,我們可以使用一條命令完成。例子是轉換5個元素下標為線性索引號。

sub2ind(size(a), 3, 3, 2);

sub2ind(size(a), 2, 4, 1);

sub2ind(size(a), 3, 1, 2);

sub2ind(size(a), 1, 3, 2);

sub2ind(size(a), 2, 4, 1);

sub2ind(size(a), [3 2 3 1 2], [3 4 1 3 4], [2 1 2 2 1])

ans =

21    11    15    19    11

%%[3 2 3 1 2], [3 4 1 3 4], [2 1 2 2 1] 分別代表行,列,縱向的下標。%%

[a(3,3,2),   a(2,4,1),   a(3,1,2),   a(1,3,2),   a(2,4,1)]

ans =

0.6557    0.1576    0.8003    0.7922    0.1576

a([21, 11, 15, 19, 11])

ans =

0.6557    0.1576    0.8003    0.7922    0.1576

原文: 

matlab中sub2ind方法的使用

su2ind函式是對矩陣索引號檢索的函式,ans sub2ind size,i,j 其中第乙個引數size表示矩陣的行數和列數,i是轉換矩陣的行標,j是轉換矩陣的列標。i和j的行列數必須相同。最終結果ans對應i,j對應行列在整個矩陣中的索引。在命令視窗中輸入驗證 例項1 sub2ind 10 10...

ind2sub函式的使用方法

ind的意思是index,即索引值,sub的意思是subscript,即下標,2就是to的意思。所以這個函式的意思是把矩陣中某個元素的索引值轉換為下標。索引值 矩陣中某個元素的索引值就是它在矩陣中排第幾位的意思。比如 1 2 3 4 5 6 7 8 9 那麼4的索引值就是2,而其下標是 2,1 8的...

MATLAB中的ind2vec和vec2ind函式

先說容易理解的vec2ind吧,從命令名字上可以看出是 向量變索引 假設乙個3 6的稀疏矩陣t 1,0 1 0 0 1 0 t 2,1 0 1 1 0 0 t 3,0 0 0 0 0 1 通過vec2ind t 將會得到什麼?因為通過矩陣知道t是6列的,t 0 1 0 0 1 0 1 0 1 1 0...