在matlab中将数组转换为数字矩阵

时间:2013-12-04 06:21:48

标签: matlab

伙计我需要将数组的数据转换为: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;

有什么建议吗?提前谢谢。

1 个答案:

答案 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