使用cellfun在单元阵列中创建单元阵列

时间:2012-03-30 13:46:42

标签: matlab cell

如果我使用以下方法创建单元格数组:

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

如何在每个单元格中创建一个与数据中相应单元格长度相同的单元格数组。我知道这可以很容易地使用循环来完成,但是如何使用cellfun函数呢?

2 个答案:

答案 0 :(得分:2)

你想要那样的东西吗?

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}

答案 1 :(得分:0)

您还可以使用CELLFUN来获取每个单元格的大小,创建所需的所有单元格,然后使用MAT2CELL将它们分开来完成此操作:

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

a = 

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