4

如何有效地将不同长度的单元阵列向量组合成一个矩阵,用 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];
4

1 回答 1

3

编辑:

对于您的情况下的向量单元格,这将用零填充向量以形成矩阵

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));
于 2011-06-02T04:51:02.820 回答