我有这个单元格:
c = { {'c1_str1','c1_str2'},{'c2_str1','c2_str2','c2_str3','c2_str4'}, {'c3_str1','c3_str2'}
我希望过滤c
以获取cc
单元格:
cc = {'c1_str2', 'c2_str2','c2_str3','c2_str4', 'c3_str2'}
换句话说,我希望每个子单元格c
保留除第一个之外的所有元素。
我试过了:
cc = cellfun(@(x)[x{2:end}],c,'UniformOutput',0);
cc = cellfun(@(x)[x(2:end)],c,'UniformOutput',0);
但没有成功。因为c
足够大,你能否请某人提出建议我们如何使用cellfun
避免循环实现呢?
cc = {};
for i = 1:numel(c)
cc= [cc c{i}(2:end)];
end
谢谢!
PS:任何将子单元保持在任意位置(例如第一个第二个和第五个子单元)的建议都会非常有趣。
答案 0 :(得分:3)
你几乎拥有它:
cc = cellfun(@(x) x(2:end),c,'UniformOutput',0);
cc = [cc{:}]
任意版本有点棘手:
idx = [1,2,5]
cc = cellfun( @(x) x( idx(idx<=numel(c)) ),c,'uni',0 )
cc = [cc{:}]