How do I delete empty cells in rows of a cell array?

1 回表示 (過去 30 日間)
Tom
Tom 2013 年 6 月 11 日
Hi,
I have a cell array of strings and empty cells. I would like to rearrange this so the empty cells are on the end of each row. For example:
[a] [b] [ ] [ ] [c]
[d] [ ] [e] [ ] [ ]
should become:
[a] [b] [c] [ ] [ ]
[d] [e] [ ] [ ] [ ]
The reason I want to do this is to ultimately end up with a cell matrix of strings in the following form:
[abc]
[de]
How would I accomplish these things, or is there a more efficient way to end up with the matrix of strings?

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 6 月 11 日
編集済み: Azzi Abdelmalek 2013 年 6 月 11 日
A={['a'] ['b'] [ ] [ ] ['c']
['d'] [ ] ['e'] [ ] [ ]}
idx=not(cellfun(@isempty,A))
out=arrayfun(@(x) cell2mat(A(x,idx(x,:))),[1:size(A,1)]','un',0)
  1 件のコメント
Tom
Tom 2013 年 6 月 11 日
編集済み: Tom 2013 年 6 月 11 日
Thank you!

サインインしてコメントする。

その他の回答 (1 件)

Matt J
Matt J 2013 年 6 月 11 日
編集済み: Matt J 2013 年 6 月 11 日
You don't need to reorder the empty cells if all you intend to do is concatenate across rows:
>> C={'a',[],'b';[], 'e','d'}
C =
'a' [] 'b'
[] 'e' 'd'
>> Ccat=cell(size(C,1),1); for ii=1:size(C,1); Ccat{ii}=[C{ii,:}] ;end,
>> Ccat
Ccat =
'ab'
'ed'

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by