2

MATLABでは、このようなセル配列があります

a = { 1 2 2 3 4 5 [] []
      2 4 5 4 3 2 4 5 
      4 5 4 3 4 [] [] []}

私はこれを得る方法で空の要素を削除したい:

a = { 1 2 2 3 4 5 2 4 5 4 3 2 4 5 4 5 4 3 4}

しかし、私がこれを使うとき:a(cellfun(@isempty,a)) = []; 私が得るものはこれです:

a = {1 2 4 2 4 5 2 5 4 3 4 3 4 3 4 5 2 4 5}

それは私が望むものではありません

4

2 に答える 2

2

あなたはこれを試すことができます:A(〜cellfun('isempty'、A))

于 2012-07-16T13:16:25.647 に答える
2

問題は、線形インデックスが行の方向に実行されることです。つまり、最初の列を通過し、次に2番目の列を通過します。

reshapeベクトルを呼び出すと、これを確認できます。

>> reshape([1 2 3 4 5 6 7 8 9],3,3)
ans =
     1     4     7
     2     5     8
     3     6     9

a必要な結果を得るには、インデックスを作成する前に転置する必要があります。

a = a';
a(cellfun(@isempty,a)) = [];
于 2012-07-16T13:26:58.863 に答える