将行和列值分配给特定位置的NaN矩阵

时间:2016-10-27 20:13:12

标签: arrays matlab

我有一个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

2 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:1)

您可以使用accumarray

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

注意:RC被假定为列向量