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 に答える