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