簡體   English   中英

如何在單元格數組matlab中找到一行的子項?

[英]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

然后,您可以通過cellfunismemberall應用於每個單元格的內容。 結果是一個邏輯向量,從中您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM