如果我有一个大尺寸的数组A,并且我必须迭代它并得到它的一部分的总和,是否有任何matlab库函数来获得像sum(A(-5:5))这样的表达式例如,只返回sum(A(1:5))而不是错误,并且不添加if条件? (或将出界元素视为零)
答案 0 :(得分:3)
要将出站元素视为零,请从访问中删除索引。我假设你有一个更长的索引范围和变量索引,否则你只做System.out.println
,对吧?
1:5
答案 1 :(得分:3)
我就是这样做的:
A = [10 20 30 40]; % example, 1D
ind_start = -5;
ind_end = 5;
A2 = A(max(ind_start,1):min(ind_end,end));
给出
A2 =
10 20 30 40
然后,您可以将sum
或任何函数应用于A2
。
这也适用于 N - 维数组。索引中使用的end
函数很好地处理了适当的大小:
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));
给出
A2 =
10 20 30 40
11 21 31 41