我有一个矩阵* 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
有没有无环路的方法吗?
答案 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
中的适当位置。