我可以叫什么 发表于 2016-7-2 14:23

矩阵取值问题,用最小内存法,有什么更好的方法么?

我目前有一矩阵N*20,N会很大,百万以上,现要根据一个序列取每行的一个值,如下例子:
a =[ 1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20;
    21    22    23    24    25    26    27    28    29    30    31    32    33    34    35    36    37    38    39    40;
    41    42    43    44    45    46    47    48    49    50    51    52    53    54    55    56    57    58    59    60;
    61    62    63    64    65    66    67    68    69    70    71    72    73    74    75    76    77    78    79    80;
    81    82    83    84    85    86    87    88    89    90    91    92    93    94    95    96    97    98    99   100;
   101   102   103   104   105   106   107   108   109   110   111   112   113   114   115   116   117   118   119   120;
   121   122   123   124   125   126   127   128   129   130   131   132   133   134   135   136   137   138   139   140;
   141   142   143   144   145   146   147   148   149   150   151   152   153   154   155   156   157   158   159   160];
b=[1     5;
     2    10;
     3    20;
     4     1;
     5    15;
     6    12;
     7    10;
     8     9];
b的1.2.3.4.5...8是表示取哪行的数据,b(:,2)表示要取每行的数据的地址,哪位有什么方法用最小内存法取到想要的值?谢谢!
我目前的取值方法为: diag(a(:,b(:,2)))

百年孤独 发表于 2016-7-2 14:31

a(sub2ind(size(a),b(:,1),b(:,2)))

百年孤独 发表于 2016-7-2 14:31

a(sub2ind(size(a),b(:,1),b(:,2)))
页: [1]
查看完整版本: 矩阵取值问题,用最小内存法,有什么更好的方法么?