Create a vector with the non-zero indices of a cell array

I have a cell array. I need to create a column vector that returns the non-empty row indices.
I have tried this way but there is something to improve.
idx = find(~cellfun(@isempty,matrix),1);
% idx = [2;4]; % this is the result I need to get

 採用された回答

Dyuman Joshi
Dyuman Joshi 2023 年 7 月 26 日

0 投票

%Random data
y = {[],[];[] repmat({rand},3,3); [] []; repmat({rand},4,3) []}
y = 4×2 cell array
{0×0 double} {0×0 double} {0×0 double} {3×3 cell } {0×0 double} {0×0 double} {4×3 cell } {0×0 double}
%Find if all cells in a row are empty or not and then negating
z1 = ~all(cellfun('isempty', y),2)
z1 = 4×1 logical array
0 1 0 1
idx1 = find(z1)
idx1 = 2×1
2 4
Another approach using any() instead of all() -
%Find if any cells in a row are not empty
z2 = any(~cellfun('isempty', y),2)
z2 = 4×1 logical array
0 1 0 1
idx2 = find(z2)
idx2 = 2×1
2 4

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeResizing and Reshaping Matrices についてさらに検索

製品

リリース

R2021b

質問済み:

2023 年 7 月 26 日

回答済み:

2023 年 7 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by