【问题标题】:Assign rows and column values to a NaN matrix in specific locations将行和列值分配给特定位置的 NaN 矩阵
【发布时间】:2016-10-28 05:15:22
【问题描述】:

我有一个 NaN (155*135) 矩阵,另一个矩阵显示一个带有行号和列号的特定值。有没有办法可以将这些值分配回最终具有相同位置的 NaN 矩阵,而其他所有内容都保留为 NaN?

R   C  Value
19  4  -1133.803
20  4  -295.6810
32  4  -1906.021
20  5  -1027.048
21  5  -293.0065
32  5   236.0525
33  5  -425.1248

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    使用sub2ind:

    data = [
      % R   C   Value
        19  4  -1133.803
        20  4  -295.6810
        32  4  -1906.021
        20  5  -1027.048
        21  5  -293.0065
        32  5   236.0525
        33  5  -425.1248];
    N = nan(155,135);
    N(sub2ind(size(N),data(:,1),data(:,2))) = data(:,3);
    

    所以你得到N(min(data(:,1)):max(data(:,1)),min(data(:,2)):max(data(:,2)))(即N(19:32,4:5)):

    ans =
          -1133.8          NaN
          -295.68        -1027
              NaN      -293.01
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
              NaN          NaN
            -1906       236.05
              NaN      -425.12
    

    【讨论】:

    • 完美!非常感谢! :)
    【解决方案2】:

    你可以使用accumarray:

    result = accumarray([R C] , Value,[155,135],[],NaN)
    

    注意:RC 假定为列向量

    【讨论】:

    • 谢谢!有效。虽然我有 1675 个值要写。
    猜你喜欢
    • 2018-12-02
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多