Matlab 将单元内的单元转换为单个单元

Matlab 将单元内的单元转换为单个单元,matlab,cells,Matlab,Cells,我有一个1X100单元,其中包含专用的1X24单元。我需要提取这100个细胞,并将它们连接在一起,形成一个100X24细胞,如何才能做到这一点 我一直在玩“cellfun”函数,还使用for循环尝试执行所需的操作,但没有成功。我知道我可以一个接一个地加入这些单元,但我更喜欢一种更有效的方法。任何帮助都将不胜感激 使用以下方法从原始数据生成单元格: for i = 1:100 band{i} = prctile(e-data,i); end 如果e_数据是62X24双精度的,prctile

我有一个1X100单元,其中包含专用的1X24单元。我需要提取这100个细胞,并将它们连接在一起,形成一个100X24细胞,如何才能做到这一点

我一直在玩“cellfun”函数,还使用for循环尝试执行所需的操作,但没有成功。我知道我可以一个接一个地加入这些单元,但我更喜欢一种更有效的方法。任何帮助都将不胜感激

使用以下方法从原始数据生成单元格:

for i = 1:100
   band{i} = prctile(e-data,i);
end

如果e_数据是62X24双精度的

prctile
的第二个输入可以是一个,因此您的代码可以替换为

band = prctile(e - data, 1:100).';
这将创建一个100 x 24的数字数组,它将比单元数组性能更好

但是,一般来说,如果需要将多个单元格的内容连接在一起,可以使用
{:}
索引生成一个可传递给
cat的

result = cat(1, band{:});

prctile
的第二个输入可以是,因此您的代码可以替换为

band = prctile(e - data, 1:100).';
这将创建一个100 x 24的数字数组,它将比单元数组性能更好

但是,一般来说,如果需要将多个单元格的内容连接在一起,可以使用
{:}
索引生成一个可传递给
cat的

result = cat(1, band{:});

如果我正确理解了您的目的,您需要使用
iscell()
,然后检索所需内容:

R=cellfun(@iscell, YourCell);
Demanded_Cell=YourCell(R);

如果我正确理解了您的目的,您需要使用
iscell()
,然后检索所需内容:

R=cellfun(@iscell, YourCell);
Demanded_Cell=YourCell(R);

我会说:不要将数据作为一个单元格生成!你也可以通过做
band(i)=…
band(i,:)=…
@AnderBiguri的评论当然是正确的答案。但是,有时这是不可能的(例如使用
tokens
标志从
regexp
输出)。在这种情况下,应该会有帮助。谢谢你,我花了这么长时间看它,我变成了雪盲。我会说:不要把数据作为一个细胞来生成!你也可以通过做
band(i)=…
band(i,:)=…
@AnderBiguri的评论当然是正确的答案。但是,有时这是不可能的(例如使用
tokens
标志从
regexp
输出)。在这种情况下,我应该会有所帮助。谢谢你,我花了这么长时间看它,我已经变成了雪盲。