Matlab根据其他矩阵的数据创建矩阵

时间:2012-12-05 17:20:14

标签: matlab matrix creation

我有一个矩阵* u_test *,它包含我的测试集中的数据。 它的格式是这样的:

X  y  value
1  3  5.0
1  6  3.4
4  3  2.0

我想从* u_test *创建矩阵 test ,以便评级的值在正确的位置,例如:

   1    2    3    4    5    6

1:          5.0 
2:                         3.4
3:
4:          2.0

有没有无环路的方法吗?

2 个答案:

答案 0 :(得分:4)

最简单的方法是使用SPARSE

out = sparse(u_test(:,1),u_test(:,2),u_test(:,3));

如果数组的目标大小应为m-by-n,则可以改为编写

out = sparse(u_test(:,1),u_test(:,2),u_test(:,3),m,n);

使用稀疏的好处是,如果矩阵u_test很大,它将不会占用太多空间。但是,如果由于某种原因您无法使用稀疏,请使用

转换为完整矩阵
outNotSparse = full(out);

答案 1 :(得分:3)

一种相当简单的方法是使用函数sub2ind

A = [1 3 5; 1 6 2; 4 3 2];

maxima = max(A(:,1:2));
xsub = A(:,1);
ysub = A(:,2);

index = sub2ind(maxima, xsub, ysub);

C = zeros(maxima);
C(index) = A(:,3);

这解析了A的三列,并将前两列转换为线性索引。这些只是用于将您的数据分配到C中的适当位置。