伙计我需要将数组的数据转换为:X = [1 5,2 4,2 5]使用Matlab到这个矩阵:
[1 0 0 0 0]
[0 1 0 0 0]
[0 0 0 0 0]
[0 1 0 0 0]
[1 1 0 0 0]
其中[1 5]在同一列上,其余为[2 4,2 5]。矩阵[nn]的大小是数组X中的最大数,其中5;
有什么建议吗?提前谢谢。
答案 0 :(得分:2)
查找n
X = [1 5; 2 4; 2 5];
n = max( X(:) );
M = zeros( n ); % n-by-n matrix
M( sub2ind( [n n], X(:,2), X(:,1) ) ) = 1
M =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 0 0 0
1 1 0 0 0
编辑最好使用稀疏矩阵表示图的入射/邻接矩阵:
M = accumarray( {[X(:,2); X(:,1)], [X(:,1);X(:,1)]}, 1, [ n n], @(x) 1, 0, true )
M =
(1,1) 1
(5,1) 1
(2,2) 1
(4,2) 1
(5,2) 1
和
full(M) =
1 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 1 0 0 0
1 1 0 0 0