Which method to use, basic for loop or loop through values of a vector
조회 수: 5 (최근 30일)
이전 댓글 표시
Vector ind has indices I want to loop through, x has values.
ind = [1 3 5];
x = [10 20 30 40 50 60 70];
ind_len = size(ind,2)
Approach 1: When using a for loop, should I use the basic incremental for loop, where I access each element of x with index values from ind vector
for i = 1:ind_len
x(ind(i))
end
Approach 2: Don't use ind_len length variable and assign ind vector to for loop
for i = ind
x(i)
end
Which method is efficient ?
댓글 수: 0
채택된 답변
Jan
2020년 12월 24일
x = rand(1, 1e6);
y = zeros(size(x));
ind = randperm(numel(x));
tic
for loop = 1:10
for k = 1:numel(ind)
y(ind(k)) = x(ind(k));
end
end
toc
tic
for loop = 1:10
for k = ind
y(k) = x(k);
end
end
toc
% Elapsed time is 0.395765 seconds.
% Elapsed time is 0.739708 seconds.
The first approach can be handled more efficiently.
댓글 수: 2
추가 답변 (1개)
KALYAN ACHARJYA
2020년 12월 24일
편집: KALYAN ACHARJYA
2020년 12월 24일
More simpler, without loop
x(ind)
The 2nd approach (If I must have to choose one from above)
댓글 수: 2
KALYAN ACHARJYA
2020년 12월 24일
편집: KALYAN ACHARJYA
2020년 12월 24일
Great one, once I run the code, as given in the question..
ind = [1 3 5];
x = [10 20 30 40 50 60 70];
ind_len = size(ind,2);
tic
for i = 1:ind_len
x(ind(i));
end
toc
tic
for i = ind
x(i);
end
toc
Elapsed time is 0.000021 seconds.
Elapsed time is 0.000016 seconds.
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!