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

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

如果我有一个很大的数组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 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,它更明确,更一般。我的只是一个冒号索引