在matlab中展开细胞元素列明智
我有一个单元格不等大小的双元素。在matlab中展开细胞元素列明智
例如
cc2 =
[1x32 double]
[1x3 double]
[1x3 double]
[1x2 double]
[1x457 double]
[1x200 double]
[1x23 double]
[1x10 double]
.
.
[so on]
每个电池元件是1xn
其中n>=2
欲每个信元要素扩大逐列成其组成双打。
我想是这样的,但是,这并不工作
lens = sum(cellfun('length',cc2(:,1)),2);
out = zeros(numel(lens),max(lens));
out(bsxfun(@le,[1:max(lens)],lens)) = horzcat(cc2{:});
各个元素正在扩大在行,但我需要他们扩大逐列。
例如
input = {[1,2,3];[4];[5,6]};
output = [1,2,3;4,0,0;5,6,0];
可能有人请帮忙吗?
谢谢!
是什么
展开每个电池单元逐列成其组成双打
是什么意思?您能否提供一个示例输入和输出?因此,例如,如果您的输入是
C = {[1,2,3];
[4];
[5,6]}
那么你想要什么作为输出?
如果你想要这个
E = [1,2,3,4,5,6]
然后尝试
E = [C{:}]
如果你想
E = [1,2,3;
4,0,0;
5,6,0]
然后尝试类似的东西this answer:
n = max(cellfun(@(x)size(x,2),C))
Ecell = cellfun(@(x)[x, zeros(1,n-numel(x))], C, 'uni', 0);
E = cat(1,E{:})
注意Ecell
在上面的代码将等于
Ecell == {[1,2,3];
[4,0,0];
[5,6,0]}
这又是你的问题的另一个有效的解释。
我想E = [1,2,3; 4,0,0; 5,6,0]; –
@EyesOfÖzil请加上您的问题。此外,我的答案更新了代码。 – Dan
是的,这就是我一直在寻找的。谢谢! –
你期望你的输出是什么样的?你想用零填充吗? – Suever
有零填充是好的,但我希望他们扩大coulmnwise! –