How to fill a cell array without using a loop

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?

 채택된 답변

madhan ravi
madhan ravi 2019년 8월 7일
편집: madhan ravi 2019년 8월 7일

1 개 추천

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

질문:

2019년 8월 7일

댓글:

2019년 8월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by