2017-03-15 33 views
2

2列と数行のセル配列があります。 私はそれが空のセルを削除して一列に今 前二列の両方を有するセルアレイを作成空のセルを2に、nセル配列をMATLABで削除します。

data = data(~cellfun('isempty', data)) 

を使用する場合。私はそれらを にまだ2列にしたい。どうすればこのことができますか?

が明確であるために:subdata_1及び2は、さらに、セル配列である

data{i, 1} = subdata_1 
data{i, 2} = subdata_2 

。 したがって、セル配列dataには、2つの列と複数の行が含まれます。 ここで、各セルは別のセル配列です。いくつかの行は空になります[] これらの空のセルを削除すると、dataはもはや の2つの列と複数の行を含みますが、1つの列しか含みません。 N x 2データセル配列の構造を保持するにはどうすればよいですか?

+0

問題は完全には明確ではありません。もう少し具体的にして例を投稿してください。 – UJIN

答えて

1

行から1つの列のみを削除すると、MATLABは次元を判別できないため、結果は2 x N配列ではなくベクトルになります。

a = [1, 2, 3; 4 5 6].'; 
size(a) 
% 3 2 

a = a(a ~= 4); 
size(a) 
% 5 1 

代わりに、行全体を削除することをお勧めします。今すぐ決定するにはどの行が期待どおりの動作に依存します。

だから我々は、セットアップいくつかの例のデータを場合:

data = {1, 2, []; [], 3, []}.'; 
% [1] [] 
% [2] [3] 
% [] [] 

あなたはすべての空のセルを持つ行を削除したい場合は、空のセル

result = data(~any(cellfun('isempty', data), 2), :); 
% [2] [3] 

を持っている任意の行を削除したい場合は

result = data(~all(cellfun('isempty', data), 2), :); 
% [1] [] 
% [2] [3] 
関連する問題