data and array1 are given. I am looking for a more efficient way to generate index. It should be a one-liner.
Thanks in Advance!
data = 1:1000;
array1 = 1:10:101
array2 = array+2
index = [];
for i = 1: numel(array1)
index = [index; array1(i):array2(i)];
end
data2 = data(index)

 채택된 답변

Stephen23
Stephen23 2021년 2월 2일
data = 1:1000;
array1 = 1:10:101
array1 = 1×11
1 11 21 31 41 51 61 71 81 91 101
idx = array1(:)+(0:2);
out = data(idx)
out = 11×3
1 2 3 11 12 13 21 22 23 31 32 33 41 42 43 51 52 53 61 62 63 71 72 73 81 82 83 91 92 93

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by