我有一个单元格数组。例如,此单元格的维度为[2x3 , 3x3 , 2x4]
。我想找到这个数组的最大大小,并使这个单元格数组大小相同。我想将零添加到最小单元格大小,使其等于最大单元格大小。
我尝试使用此代码:
sz = cellfun(@(x)size(x,2), A);
minLength = min(sz);
B = cell2mat(cellfun(@(x)x(1:minLength), A, 'uniformoutput', false));'
但它不起作用。如果有人帮助我,那将是件好事。
答案 0 :(得分:1)
这应该有效
A = {rand(2,3), rand(3,3), rand(2,4)}
% Find the maximum numbers rows (dims(1)) and the maximum number of columns (dims(2))
dims = max(cell2mat(cellfun(@(x)size(x), A, 'uni', 0)'));
%Pad each element of A with zeros so that it's size becomes dims
B = cellfun(@(x)[x,zeros(size(x,1),dims(2)-size(x,2));zeros(dims(1)-size(x,1),dims(2))], A,'uni', 0)
这导致
B =
[3x4 double] [3x4 double] [3x4 double]
更具体地说:
>> B{1}
ans =
0.9028 0.5791 0.0366 0
0.5763 0.0658 0.3373 0
0 0 0 0
>> B{2}
ans =
0.0764 0.1326 0.4413 0
0.2463 0.0238 0.3726 0
0.0299 0.2610 0.1408 0
>> B{3}
ans =
0.6266 0.6141 0.5653 0.5951
0.3176 0.0741 0.5795 0.2600
0 0 0 0