MATLAB重塑矩阵将索引转换为行索引

时间:2013-04-24 15:37:44

标签: matlab matrix reshape

是否有可能重塑这样的矩阵

x1 = 
    1   5
    3   4
    4   3
    7   1

变为

x2 =
    5
    NaN
    4
    3
    NaN
    NaN
    1

,反之亦然,x1中的第一列是与x2中的行#对应的索引?

1 个答案:

答案 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)];