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?????0
?????0?????0?????0?????0?????0?????1
vec2ind(T)得到的是1行6列的向量,該向量對應的元素分別是T中第1列到第6列中數(shù)字"1"對應的行號,因例子中的T矩陣,在第一列中第2行對應的是"1",則vec2ind(T)的第一個元素是2,同理,T中第二列中“1”在第1行,則vec2ind(T)的第二個元素是"1",依次類推,T中第3列至第6列中“1”對應行數(shù)分別是“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
?
?
?
神經(jīng)網(wǎng)絡中:
a = sim(net,P)??后運行的結果是:a =
??(10,1)????????1??????????????%表示輸入第1個測試樣本數(shù)據(jù),10號神經(jīng)元獲勝(我用的是hextop建立的竟爭層)
??(10,2)????????1??????????????%表示輸入第2個測試樣本數(shù)據(jù),10號神經(jīng)元獲勝
???(9,3)????????1???????????????%表示輸入第3個測試樣本數(shù)據(jù),9號神經(jīng)元獲勝
???(8,4)????????1??????????????????%表示輸入第4個測試樣本數(shù)據(jù),8號神經(jīng)元獲勝
???(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??????
這樣可以更清晰地看出來從第一個樣本到最后一個樣本,分別是那個神經(jīng)元獲勝。
總結
以上是生活随笔為你收集整理的MATLAB中的ind2vec和vec2ind函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BP神经网络(检测故障的实例)
- 下一篇: 径向基神经网络(实例故障分类)