我有两个矩阵。
当使用下面的代码行时,我收到Index超出矩阵维度的错误消息。我不知道这是怎么回事?
tsp = nansum(mcaps(index_g==1, :));
更新
对不起我应该提到我需要mcaps矢量中每列的总和
**数据示例**
mcaps index_g
5 6 0 0
4 3 0 0
6 5 1 1
4 6 0 1
8 7 0 0
答案 0 :(得分:4)
这里有两个问题。我错过了一个。原始答案如下。
我错过的是,当您以这种方式使用逻辑索引时,您正在挑选矩阵中可能在每列中包含不同数量元素的元素,因此MATLAB无法将格式良好的矩阵返回到{ {1}},然后返回一个向量。要解决这个问题,请使用nansum
0 + anything = 0
这基本上是% create a mask of values you don't want to sum. Note that since
% index_g is already logical, you don't have to test equal to 1.
mask = ~index_g & isnan(mcaps)
% create a temporary variable
mcaps_to_sum = mcaps;
% change all of the values that you don't want to sum to zero
mcaps_to_sum(mask) = 0;
% do the sum
sum(mcaps_to_sum,1);
函数在内部执行的所有操作,即将所有nansum
值设置为零,然后调用sum函数。
NaN
返回一个1698 x 2的逻辑矩阵,但随后你会用冒号添加一个额外的维度。要对列进行求和,请使用可选的index_g == 1
输入。你想要:
dim