我有一个不等大小的双元素的单元格。
例如
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];
有人可以帮忙吗?
谢谢!
答案 0 :(得分:1)
什么是
将每个单元格按列扩展为其成分双精度
意思?能否请您提供示例输入和输出。例如,如果您的输入是
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]}
这是对你问题的另一个有效解释。