MATLAB Answers

replacing loop with cell of index values

14 views (last 30 days)
Catherine
Catherine on 16 Jan 2021
Commented: Catherine on 16 Jan 2021
I don't know how to explain with words what I'm trying to do, so here is an example
%I have an array of values
s = [1:100];
% and I have a cell array of different index values
c{1} = 1;
c{2} = 1:5;
c{3} = 2:2:10;
% I would like a cell array t, where
t{1} = s(c{1});
t{2} = s(c{2});
% etc.
% I can do this with a loop, but I'm wondering if there is a way to do this without a loop as my set of indices are large.

  0 Comments

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 16 Jan 2021
Edited: Stephen Cobeldick on 16 Jan 2021
s = 1:100;
c{1} = 1;
c{2} = 1:5;
c{3} = 2:2:10;
out = cellfun(@(x)s(x),c,'uni',0);
out{:}
ans = 1
ans = 1×5
1 2 3 4 5
ans = 1×5
2 4 6 8 10
A well-written (i.e. correctly preallocated, etc.) loop will be faster.

  1 Comment

Catherine
Catherine on 16 Jan 2021
Thank you. Good to know that the loop might be faster.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!