How to fill a cell array without using a loop
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
Assuming that we have an array of integers, for example a = [2 4 3], I am trying to create a cell array where each
cell contains arrays given by [-a(i) : 1 : a(i)] where a(i) is an arbitrary element i in the array a. So the example
a = [2 4 3] would result in a cell array c = {[-2 : 1 : 2], [-4 : 1 4], [-3 : 1 : 3]}.
I know how this can be done with a for loop but I was wondering if there is a way to do it without loops?
0 Commenti
Risposta accettata
madhan ravi
il 7 Ago 2019
Modificato: madhan ravi
il 7 Ago 2019
I'm not sure of any other method but here is one with implicit loop:
c = arrayfun(@(x) -x:x, a,'un',0)
celldisp(c)
Or another method with accumarray():
c = accumarray((1:numel(a)).',a,[],@(x){-x:x})
celldisp(c)
Gives:
>> celldisp(c)
c{1} =
-2 -1 0 1 2
c{2} =
-4 -3 -2 -1 0 1 2 3 4
c{3} =
-3 -2 -1 0 1 2 3
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!