忽略对矩阵的出站索引访问

时间:2016-12-12 10:00:15

标签: matlab

如果我有一个大尺寸的数组A,并且我必须迭代它并得到它的一部分的总和,是否有任何matlab库函数来获得像sum(A(-5:5))这样的表达式例如,只返回sum(A(1:5))而不是错误,并且不添加if条件? (或将出界元素视为零)

2 个答案:

答案 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