如何高效地将不同长度的单元数组向量组合成矩阵,并用0或NaN填充向量到最大长度?这将是cell2mat()
的一个不错的选项。
例如,如果我有以下单元数组:
C = {1:3; 1:5; 1:4};
我希望可以获得以下两种选择之一:
M = [1 2 3 0 0
1 2 3 4 5
1 2 3 4 0];
或者
M = [1 2 3 NaN NaN
1 2 3 4 5
1 2 3 4 NaN];
如何高效地将不同长度的单元数组向量组合成矩阵,并用0或NaN填充向量到最大长度?这将是cell2mat()
的一个不错的选项。
例如,如果我有以下单元数组:
C = {1:3; 1:5; 1:4};
M = [1 2 3 0 0
1 2 3 4 5
1 2 3 4 0];
或者
M = [1 2 3 NaN NaN
1 2 3 4 5
1 2 3 4 NaN];
对于您的情况,即行向量的单元格,这将使用零来填充向量以形成矩阵。
out=cell2mat(cellfun(@(x)cat(2,x,zeros(1,maxLength-length(x))),C,'UniformOutput',false))
out =
1 2 3 0 0
1 2 3 4 5
1 2 3 4 0
out=cell2mat(cellfun(@(x)cat(1,x,zeros(maxLength-length(x),1)),C,'UniformOutput',false));
假设已知 maxLength
。在您的情况下,您有行向量,这只是对此的轻微修改。
如果未知 maxLength
,可以通过以下方式获得:
maxLength=max(cellfun(@(x)numel(x),C));
maxLength = max(cellfun(@numel,x));
我会进一步研究它。 - yuk