[英]matlab replace value in matrix
我試圖用這樣的特定節點號替換邊列表矩陣的第一和第二列(edgenumber x 3):
5 1 1
1 38 1
2 1 1
28 17 1
18 1 1
25 1 1
將節點號(從節點5到節點1的連接)替換為向量中的相應值。 邊緣列表是根據未加權的40x40鄰接矩陣生成的。 大小為40x1的向量degree_list包含此邊緣列表的“真實”節點號,我要將其添加到較大的321x321鄰接矩陣中。 (如果有一種更簡單的方法,那就是連接邊緣列表,那也很好)。
degree_list=[183,150,151,39,184,185,152,...];
因此,在上述邊緣列表中,我想將coll 1和coll中的所有1替換為183,將2替換為150等。
然后,我需要保留這個新邊緣列表,並將其添加到較大的邊緣列表中,將其轉換回鄰接矩陣,並擁有新的正確的較大的adjM。
我試圖在這里和其他網站上找到解決方案,但沒有成功。 克里斯,非常感謝您的幫助
碼
a1 = [
5 1 1
1 38 1
2 1 1
28 17 1
18 1 1
25 1 1]
degree_list=[183,150,151,39,184,185,152];
col12 = a1(:,[1 2])
col12_uniq = unique(col12)
degree_list = [degree_list numel(degree_list)+1:max(col12_uniq)]
uniq_dim3 = bsxfun(@eq,col12,permute(repmat(col12_uniq,1,2),[3 2 1]))
match_dim3 = bsxfun(@times,uniq_dim3,permute(degree_list(col12_uniq),[3 1 2]))
a1_out = [sum(match_dim3,3) a1(:,3)]
產量
a1 =
5 1 1
1 38 1
2 1 1
28 17 1
18 1 1
25 1 1
a1_out =
184 183 1
183 38 1
150 183 1
28 17 1
18 183 1
25 183 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.