создание массива ячеек в массиве ячеек с помощью cellfun - PullRequest
1 голос
/ 30 марта 2012

Если я создаю массив ячеек, используя:

clear all
data = {rand(1,5),rand(1,4),rand(1,4),rand(1,6)};
a = cell(1,length(data));

, как тогда можно создать массив ячеек в каждой ячейке, длина которой равна соответствующей ячейке в данных.Я знаю, что это легко сделать с помощью цикла, но как это возможно с помощью функции cellfun?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Хочешь что-нибудь подобное?

data = {rand(1,5),rand(1,4),rand(1,4),rand(1,6)};
a2=cellfun(@(x) cell(size(x)),data,'UniformOutput',0)
a2 = 
    {1x5 cell}    {1x4 cell}    {1x4 cell}    {1x6 cell}
0 голосов
/ 30 марта 2012

Вы также можете сделать это, используя CELLFUN , чтобы просто получить размеры каждой ячейки, создать все нужные ячейки, а затем разделить их, используя MAT2CELL :

>> cellSizes = cellfun('size',data,2);
>> a = mat2cell(cell(1,sum(cellSizes)),1,cellSizes)

a = 

    {1x5 cell}    {1x4 cell}    {1x4 cell}    {1x6 cell}
...