1

variable にデータの列ベクトルとvdataindeces のリストがありますidx。の各インデックスの前後vdataのインデックスにアクセスしたい。forループでそれを行う1つの方法は次のとおりです。xxidx

x = 10;
accessed_data = [];
for (ii = 1:length(idx))
    accessed_data = vdata(idx-x:idx+x);
end

ベクトル化された関数でこれを行う方法はありますか? ここで非常によく似た質問の解決策を見つけました:ベクトル内のインデックスを介して複数の範囲に対処しますが、コードがわかりません:(。

4

3 に答える 3

2

仮定するmin(idx)-x>0max(idx)+x<=numel(vdata)、あなたは簡単にできる

 iidx = bsxfun(@plus, idx(:), -x:x); % create all indices
 accessed_data = vdata( iidx );
于 2013-07-29T21:08:38.423 に答える