是否有可能重塑这样的矩阵
x1 =
1 5
3 4
4 3
7 1
变为
x2 =
5
NaN
4
3
NaN
NaN
1
,反之亦然,x1
中的第一列是与x2
中的行#对应的索引?
答案 0 :(得分:5)
使用NaN创建一个数组,并用值填充:
x2 = NaN(max(x1(:,1)),1);
x2(x1(:,1)) = x1(:,2);
现在,如果零填充是可接受的,那么您可以直接使用第二行而无需先创建out
。
或者,对于您的具体示例(没有重叠索引),可以获得相同的结果:
accumarray(x1(:,1),x1(:,2),[],[],NaN)
走另一条路
idx = ~isnan(x2);
x1 = [find(idx) x2(idx)];