【发布时间】:2015-02-02 19:06:41
【问题描述】:
我有一个大小为 m x 1 的单元格数组,每个单元格又是 s x t 单元格数组(大小不同)。我想垂直连接。代码如下:
function(cell_out) = vert_cat(cell_in)
[row,col] = cellfun(@size,cell_in,'Uni',0);
fcn_vert = @(x)([x,repmat({''},size(x,1),max(cell2mat(col))-size(x,2))]);
cell_out = cellfun(fcn_vert,cell_in,'Uni',0); % Taking up lot of time
cell_out = vertcat(cell_out{:});
end
第 3 步需要很长时间。这是正确的方法还是有其他更快的方法来实现这一目标?
【问题讨论】:
-
你试过
profile代码吗? -
只是一个小改进:你不需要
'uni',0第一个cellfun输出大小是统一的。 -
@Daniel 大小不一,不统一。请再检查一遍好吗?
-
@nik:你能提供一个示例输入吗?使用我生成的数据
[row,col] = cellfun(@size,cell_in);运行没有错误。也许我把你的数据描述弄错了。 -
@Daniel 假设单元格大小为 4 x 1,每个单元格的大小为 1 x 3、1 x 2、1 x 4、1 x 1。没有 '\'' 'Uni', 0 '\'' 我觉得不行
标签: performance matlab cell-array