MATLAB中的ind2vec和vec2ind函式

2021-07-04 02:19:31 字數 1722 閱讀 5106

先說容易理解的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  0

0  0 

0  0 

0  1

vec2ind(t)得到的是1行6列的向量,該向量對應的元素分別是t中第1列到第6列中數字"1"對應的行號,因例子中的t矩陣,在第一列中第2行對應的是"1",則vec2ind(t)的第乙個元素是2,同理,t中第二列中「1」在第1行,則vec2ind(t)的第二個元素是"1",依次類推,t中第3列至第6列中「1」對應行數分別是「2","2","1","3"。

因此,vec2ind(t)=[2 1 2 2 1 3];

ind2vec則反過來理解即可,如乙個索引適量a=[1 3 2 2 2 1 2 1],求ind2vec?

從a可以看出a是1行8列的(如果實在不知道,就用size(a)檢視),從a中元素最大值"3"可以看出,索引對應的向量是3行的,還不理解?那就用最基本的方法,因a中元素對應的是行號,設b=ind2vec(a),意味著b(1,1),b(3,2),b(2,3),b(2,4), b(2,5), b(1,6),b(2,7),b(1,8)對應的值是"1",其餘元素均為"0"

即 1 0 0 0 0 1 0 1

b=ind2vec(a)= 

0 0 1 1 1 0 1 0

0 1 0 0 0 0 0 0

神經網路中:

a = sim(net,p) 

後執行的結果是:a =

(10,1) 

1 %表示輸入第1個測試樣本資料,10號神經元獲勝(我用的是hextop建立的竟爭層)

(10,2) 

1 %表示輸入第2個測試樣本資料,10號神經元獲勝

(9,3) 

1 %表示輸入第3個測試樣本資料,9號神經元獲勝

(8,4) 

1 %表示輸入第4個測試樣本資料,8號神經元獲勝

(8,5) 

1 。。。。。。

(29,6) 

1(40,7) 

1(50,8) 

1(60,9) 

1(60,10) 

1用ac = vec2ind(a) 

後可得:

ac =

columns 1 through 10

10 10 

9 8 

8  29 

40 50 

60 60 

這樣可以更清晰地看出來從第乙個樣本到最後乙個樣本,分別是那個神經元獲勝。

matlab中的sub2ind函式

在matlab中,矩陣的儲存是按列優先,sub2ind函式將矩陣中指定元素的行列下標轉換成儲存的序號,即線性索引號。下面,我們舉例子進行說明。1 建立乙個3 4 2的矩陣 rng 0,twister initialize random number generator.a rand 3,4,2 a ...

matlab中sub2ind方法的使用

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

MATLAB sub2ind函式的使用

在matlab軟體中,矩陣的元素可以使用三種方式進行標識 全下標標識法 最經典的標識方法,使用行下標與列下標的組合用以標識單個元素 單下標標識法 矩陣的後台儲存形式是按照單下標標識法作為一列儲存到記憶體中的,也就是說在這個過程中會將二維的矩陣進行一維的編號。而單下標與雙下標的轉換關係為,m n的二維...