2016-12-12 6 views

答えて

3

アウトバウンド要素をゼロとして扱うには、アクセスからインデックスを削除します。私はあなたがより長いインデックス範囲と可変インデックスを持っていると仮定します。それ以外の場合は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 
3

これは、私はそれを行うだろうかです:

A = [10 20 30 40]; % example, 1D 
ind_start = -5; 
ind_end = 5; 
A2 = A(max(ind_start,1):min(ind_end,end)); 

は、その後、あなたがA2sumまたは任意の関数を適用することができます

A2 = 
    10 20 30 40 

を与えます。

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 
+0

素敵を提供します!私はまだ私のバージョンがもっと好きだと思う:P、その明示的 –

+1

そしてより一般的。私の場合、コロンのインデックスのみ –

関連する問題