在 matlab 中按列扩展单元格元素
Expand cell elements column wise in 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];
有人可以帮忙吗?
谢谢!
什么是
expand each cell element column-wise into its constituent doubles
是什么意思?您能否提供示例输入和输出。例如,如果您的输入是
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]}
这是对您的问题的另一种有效解释。
我有一个包含大小不等的双元素的单元格。
例如
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];
有人可以帮忙吗?
谢谢!
什么是
expand each cell element column-wise into its constituent doubles
是什么意思?您能否提供示例输入和输出。例如,如果您的输入是
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]}
这是对您的问题的另一种有效解释。