Find the indexes of all the zeros or nonzeros in a cell array that contains empty cells

36 ビュー (過去 30 日間)
Is there a way to find the indexes of all nonzero elements in a cell that contains empty cells too? I know of the way to first replace all of empty cells with 0 and they use the find and cellfun function. But is there a simpler way? Lets say A={2 5 0 10 0 [] 22 0 13} index=find(~cellfun(@isempty,A)) % index for non-empty cells Is there a way to find indexes for those who contain positive numbers only? Thanks btw using MatLab 2015a
  1 件のコメント
Stephen23
Stephen23 2017 年 9 月 15 日
編集済み: Stephen23 2017 年 9 月 15 日
Why are you storing numeric data in a cell array? Numeric arrays are the best kind of array for storing numeric data. Note that find is not required if you just want to replace empty arrays with zero:
A(cellfun('isempty',A)) = {0}

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

採用された回答

Stephen23
Stephen23 2017 年 9 月 15 日
編集済み: Stephen23 2017 年 9 月 15 日
>> A = {2,5,0,10,0,[],22,0,13};
>> cellfun(@(a)~isempty(a)&&a>0,A)
ans =
1 1 0 1 0 0 1 0 1
But note that doing numeric operations on the contents of a cell array is quite inefficient. You could be much better off putting numeric data into a numeric array, and then all numeric operations will be much simpler and much more efficient:
>> A = {2,5,0,10,0,[],22,0,13};
>> A(cellfun('isempty',A)) = {NaN};
>> V = [A{:}]
V =
2 5 0 10 0 NaN 22 0 13
>> V>0
ans =
1 1 0 1 0 0 1 0 1

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by