Return index of cell in a cell array for which contains a desired element

1 回表示 (過去 30 日間)
hmhuang
hmhuang 2022 年 2 月 20 日
コメント済み: Voss 2022 年 2 月 20 日
I have a cell array:
C = {[1,2,4], [3,5], [8,9]}
I would like to have a function, such that:
somefunc(C, 2) % will return 1, indicating that 2 is in the 1st cell of the cell array
somefunc(C, 8) % will return 3, indicating that 8 is in the 3rd cell of the cell array
somefunc(C, 7) % will return 0 or -1 or whatever that is not 1 or 2, or 3
Is there any MATLAB built-in function that could achieve this purpose?
Thanks in advance!
(Assume the elements in the cell array are unique.)

採用された回答

Voss
Voss 2022 年 2 月 20 日
C = {[1,2,4], [3,5], [8,9]};
find(cellfun(@(x)ismember(2,x),C))
ans = 1
find(cellfun(@(x)ismember(8,x),C))
ans = 3
find(cellfun(@(x)ismember(7,x),C))
ans = 1×0 empty double row vector
  1 件のコメント
Voss
Voss 2022 年 2 月 20 日
Or, making that command into a function you can call:
C = {[1,2,4], [3,5], [8,9]};
find_cell_containing(C,2)
ans = 1
find_cell_containing(C,8)
ans = 3
find_cell_containing(C,7)
ans = 1×0 empty double row vector
function idx = find_cell_containing(C,in)
idx = find(cellfun(@(x)ismember(in,x),C));
end

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by