フィルターのクリア

Searching and Manipulating Cell Array

1 回表示 (過去 30 日間)
Sam Da
Sam Da 2012 年 10 月 19 日
I have a cell array A:
[3,2]
[2,4]
[4,5]
[2,5]
[6]
and cell array B:
[2,3,4]
[2,5]
[4,5,6]
In the array B I can see that [2,3,4] is made of union of [3,2] and [2,4] from A. [2,5] in B is made from union of only [2,5] from A. [4,5,6] in B is made of [4,5] and [6] in A.
So, I want to find the index of elements in A union of which make each array element of B. How do I do this?
Thanks guys
  2 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 10 月 19 日
what are the sizes of elments in B? can they be >3. The same question about A
Sam Da
Sam Da 2012 年 10 月 19 日
Yes they can be of any length. Thanks for interest. I think Matt's code already works for a general case. But if you have a simpler solution please do post.

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

採用された回答

Matt J
Matt J 2012 年 10 月 19 日
編集済み: Matt J 2012 年 10 月 19 日
subsetmap=false(length(A), length(B));
for bb=1:length(B)
for aa=1:length(A)
subsetmap(aa,bb) = all(ismember(A{aa},B{bb}));
end
end
%this next line is unnecessary if logical indexing is sufficient
indices=arrayfun(@(col) find(subsetmap(:,col)),1:length(B),'uni',0);
  3 件のコメント
Matt J
Matt J 2012 年 10 月 19 日
Yes. My code already does that.
Matt J
Matt J 2012 年 10 月 19 日
By the way. My code doesn't check to see whether all B{i} can actually be formed from the union of some A{j}. It only works if this is already the case. I leave it to you to add the appropriate error checks.

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

その他の回答 (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