Azzera filtri
Azzera filtri

replacing loop with cell of index values

2 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Stephen23
Stephen23 il 16 Gen 2021
Modificato: Stephen23 il 16 Gen 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.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by