[英]how to find subitems of a row in cell array matlab?
我的單元格數組如下:
S{1} = [10,20,30,40,50];
S{2} = [10,20,40,50];
S{3} = [10,50,510];
S{4} = [10,20,70,40,60];
S{5} = [20,40];
並且,我需要找到以下子項的單元格行:
[10,20,30,40,50,60]
以上示例結果是:
1,2,5
因為第1行和第2行以及第5行只有[10,20,30,40,50,60]的子項。
在我的工作中,單元格數組很大。 我需要一個快速的代碼。
讓
S{1} = [10,20,30,40,50];
S{2} = [10,20,40,50];
S{3} = [10,50,510];
S{4} = [10,20,70,40,60];
S{5} = [20,40]; % data
t = [10,20,30,40,50,60]; % target values
然后,您可以通過cellfun
將ismember
和all
應用於每個單元格的內容。 結果是一個邏輯向量,從中您可以使用find
獲得所需的索引:
result = find(cellfun(@(x) all(ismember(x, t)), S));
另一種選擇(我不知道哪一個在你的情況下會更快)是通過計算與bsxfun
所有成對比較然后應用any
來替換ismember
:
result = find(cellfun(@(x) all(any(bsxfun(@eq, t(:), x(:).'), 1)), S));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.