Arrays Matlab中行到任意列的求和
我试图对一个for循环进行向量化,该循环将一个向量和另一个向量定义的索引相加。有大量向量需要求和。这在for循环中很容易实现,但对我来说可能不是很明显,而是以矢量化的方式实现的 一个随机的例子是: t=兰特(10,5) c=randi([1,5],1,10) 基本上,我现在需要对每一行求和,直到对应的列由与当前行t相同的索引c给出。返回值将是行和到其各自列c(i)的向量。我已经探索了很多我能想到的求和函数的操作,但是没有一个能达到最终的结果Arrays Matlab中行到任意列的求和,arrays,matlab,matrix,Arrays,Matlab,Matrix,我试图对一个for循环进行向量化,该循环将一个向量和另一个向量定义的索引相加。有大量向量需要求和。这在for循环中很容易实现,但对我来说可能不是很明显,而是以矢量化的方式实现的 一个随机的例子是: t=兰特(10,5) c=randi([1,5],1,10) 基本上,我现在需要对每一行求和,直到对应的列由与当前行t相同的索引c给出。返回值将是行和到其各自列c(i)的向量。我已经探索了很多我能想到的求和函数的操作,但是没有一个能达到最终的结果 有什么建议吗?一种方法是使用创建要包含在每行总和中的值
有什么建议吗?一种方法是使用创建要包含在每行总和中的值的掩码:
result = sum(t .* bsxfun(@le, 1:size(t,2), c(:)), 2);
在Matlab R2016b或更新版本中,您可以使用以下命令代替bsxfun:
result = sum(t .* (1:size(t,2) <= c(:)), 2)
result=sum(t.*(1:size(t,2)