Matlab 向量的部分和

Matlab 向量的部分和,matlab,Matlab,对于一个向量v(例如v=[1,2,3,4,5])和两个索引向量(例如a=[1,1,1,2,3]和b=[3,4,5,5,5],所有a(i)Yes!ncumsum(v)的第个元素是v中第一个n元素的总和,因此只需取该值并减去不希望包含的元素的总和: v=[1,2,3,4,5] a=[1,1,1,2,3] b=[3,4,5,5,5] C=cumsum(v) C(b)-C(a)+v(a) %// or alternatively C=cumsum([0 v]) C(b+1)-C(a) 是的。cum

对于一个向量
v
(例如
v=[1,2,3,4,5]
)和两个索引向量(例如
a=[1,1,1,2,3]
b=[3,4,5,5,5]
,所有
a(i)Yes!
n
cumsum(v)的第个元素
v
中第一个
n
元素的总和,因此只需取该值并减去不希望包含的元素的总和:

v=[1,2,3,4,5]
a=[1,1,1,2,3]
b=[3,4,5,5,5]

C=cumsum(v)
C(b)-C(a)+v(a)

%// or alternatively
C=cumsum([0 v])
C(b+1)-C(a)

是的。
cumsum(v)
n
第th个元素是
v
中第一个
n
元素的总和,因此只需取该值并减去不希望包含的元素之和:

v=[1,2,3,4,5]
a=[1,1,1,2,3]
b=[3,4,5,5,5]

C=cumsum(v)
C(b)-C(a)+v(a)

%// or alternatively
C=cumsum([0 v])
C(b+1)-C(a)

以下代码可以工作,但其可读性当然要差得多:

% assume v is a column vector 
units = 1:length(v); units = units'; %units is a column vector
units_matrix = repmat(units, [1 length(a)]);
a_matrix = repmat(a, [length(v) 1]); % assuming a is is a row vector
b_matrix = repmat(b, [length(v) 1]);
weights = (units_matrix>=a_matrix) & (units_matrix<=b_matrix);

v_matrix = repmat(v, [1 length(a)]);
w = sum(v_matrix.*weights);
%假设v是一个列向量
units=1:长度(v);units=units';%units是列向量
单位矩阵=repmat(单位,[1长度(a)]);
a_矩阵=repmat(a,[length(v)1]);%假设a是行向量
b_矩阵=repmat(b,[长度(v)1]);

权重=(units\u matrix>=a\u matrix)&(units\u matrix下面的代码可以工作,但它的可读性当然要差得多:

% assume v is a column vector 
units = 1:length(v); units = units'; %units is a column vector
units_matrix = repmat(units, [1 length(a)]);
a_matrix = repmat(a, [length(v) 1]); % assuming a is is a row vector
b_matrix = repmat(b, [length(v) 1]);
weights = (units_matrix>=a_matrix) & (units_matrix<=b_matrix);

v_matrix = repmat(v, [1 length(a)]);
w = sum(v_matrix.*weights);
%假设v是一个列向量
units=1:长度(v);units=units';%units是列向量
单位矩阵=repmat(单位,[1长度(a)]);
a_矩阵=repmat(a,[length(v)1]);%假设a是行向量
b_矩阵=repmat(b,[长度(v)1]);

权重=(单位矩阵>=a_矩阵)和(单位矩阵)。我也考虑过构建指标矩阵(你的权重矩阵),谢谢你为我提供了一种方法。虽然存储不是我的问题,但David的建议似乎更简单(也更快?).David的解决方案当然更简单、更好,因为
cumsum
是直接实现的(它必须做一些与我的代码类似的事情,但它是预编译的,因此速度更快)。我根本记不起函数。我明白了。我还考虑过构建指标矩阵(你的权重矩阵)您为我提供了一种方法,谢谢。虽然存储不是我的问题,但David的建议似乎更简单(也更快?)。David的解决方案当然更简单更好,因为
cumsum
是直接实现的(它必须做一些类似于我的代码的事情,但它是预编译的,因此速度更快).我简直记不起功能了。非常感谢。你为我节省了很多时间。非常感谢。你为我节省了很多时间。