【问题标题】:MATLAB reshape matrix converting indices to row indexMATLAB reshape 矩阵将索引转换为行索引
【发布时间】:2013-04-24 15:37:43
【问题描述】:

是否可以重塑矩阵,使得

x1 = 
    1   5
    3   4
    4   3
    7   1

变成

x2 =
    5
    NaN
    4
    3
    NaN
    NaN
    1

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

【问题讨论】:

    标签: matlab matrix reshape


    【解决方案1】:

    用 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)];
    

    【讨论】:

    • 我该如何走另一条路? IE。从x2x1
    • 相反,我不断收到??? Error using ==> isnan Not enough input arguments.
    • 对不起!那很完美!可能有一种方法可以通过使用我的其他计算的输出来解决这个问题,但这会做得很好。
    猜你喜欢
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2018-03-26
    • 1970-01-01
    • 2019-11-03
    • 2014-05-12
    相关资源
    最近更新 更多