我有一个稀疏矩阵:
A=
(14,13) 0.5286
(15,14) 0.6781
(16,15) 0.5683
(17,16) 1.2773
(18,17) 1.0502
(19,18) 0.4966
(21,19) 0.9951
(21,20) 0.4522
(22,21) 0.8507
(23,22) 1.0727
(24,23) 0.8288
(25,24) 0.5811
(26,25) 0.8235
(28,26) 1.5128
(30,28) 0.7966
(30,29) 0.6363
(31,29) 0.8254
(32,31) 0.8573
(33,32) 1.0753
这是最小生成树的结果。现在我要提取13,14,15,...26,28,29,...33
。
如图所示27不在数字之间。所以pred
给出:13 14 15 16 17 18 19 21 22 23 24 25 26 28 29 30 31 32
20和33不是。
如何提取在顶部说出的总数?
答案 0 :(得分:0)
[ii jj] = find(A);
answer = unique([ii(:); jj(:)]);
应该这样做。
请注意,带有两个输出的find
命令会为您提供所有非零元素的行和列索引。由于您拥有最小生成树,因此您关注的每个数字都需要在行或列中至少出现一次(例如,您的矩阵在第一个索引中的数字29
不会出现,但它会在第二个索引中出现)
unique
函数确保出现的每个数字仅表示一次。