Matlab 忽略对矩阵的出站索引访问
如果我有一个很大的数组A,我必须对它进行迭代并得到它的一部分的和,是否有任何matlab库函数来获得像sum(A(-5:5))这样的表达式,例如,只返回sum(A(1:5))而不是错误,并且不添加If条件?(或将outbounds元素视为零)要将outbound元素视为零,请从访问列表中删除索引。我假设你有一个较长的索引范围和可变索引,否则你只需要做Matlab 忽略对矩阵的出站索引访问,matlab,Matlab,如果我有一个很大的数组A,我必须对它进行迭代并得到它的一部分的和,是否有任何matlab库函数来获得像sum(A(-5:5))这样的表达式,例如,只返回sum(A(1:5))而不是错误,并且不添加If条件?(或将outbounds元素视为零)要将outbound元素视为零,请从访问列表中删除索引。我假设你有一个较长的索引范围和可变索引,否则你只需要做1:5,对吗 for ii: some_array index=-5:5; %I assume you fill this different
1:5
,对吗
for ii: some_array
index=-5:5; %I assume you fill this differently
index(index<1 || index>size(A,1))=[] % delete out of bounds
sum(A(index))
end
ii的部分\u数组
索引=-5:5;%我想你用不同的方式填这个
索引(indexsize(A,1))=[]%删除超出范围
总和(A(指数))
结束
要将出站元素视为零,请从访问列表中删除索引。我假设你有一个较长的索引范围和可变索引,否则你只需要做1:5
,对吗
for ii: some_array
index=-5:5; %I assume you fill this differently
index(index<1 || index>size(A,1))=[] % delete out of bounds
sum(A(index))
end
ii的部分\u数组
索引=-5:5;%我想你用不同的方式填这个
索引(indexsize(A,1))=[]%删除超出范围
总和(A(指数))
结束
我会这样做:
A = [10 20 30 40]; % example, 1D
ind_start = -5;
ind_end = 5;
A2 = A(max(ind_start,1):min(ind_end,end));
给予
然后您可以对A2
应用sum
或任何函数
这也适用于N维数组。索引中使用的函数很好地处理了适当的大小:
A = [10 20 30 40; 11 21 31 41]; % example, 2D
ind_start = -5;
ind_end = 5;
A2 = A(:, max(ind_start,1):min(ind_end,end));
给予
我会这样做:
A = [10 20 30 40]; % example, 1D
ind_start = -5;
ind_end = 5;
A2 = A(max(ind_start,1):min(ind_end,end));
给予
然后您可以对A2
应用sum
或任何函数
这也适用于N维数组。索引中使用的函数很好地处理了适当的大小:
A = [10 20 30 40; 11 21 31 41]; % example, 2D
ind_start = -5;
ind_end = 5;
A2 = A(:, max(ind_start,1):min(ind_end,end));
给予
美好的我想我还是更喜欢我的版本:P,它更明确,更一般。我的只是一个冒号索引尼斯!我想我还是更喜欢我的版本:P,它更明确,更一般。我的只是一个冒号索引