matlab - 如何在元胞数组matlab中找到一行的子项?

标签 matlab cell subitem

我有如下的元胞数组:

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

然后,您可以申请ismemberall通过 cellfun 到每个单元格的内容.结果是一个逻辑向量,您可以使用 find 从中获得所需的索引:

result = find(cellfun(@(x) all(ismember(x, t)), S));

另一种方法(我不知道在你的情况下哪个更快)是通过计算所有与 bsxfun 的成对比较来替换 ismember然后申请any :

result = find(cellfun(@(x) all(any(bsxfun(@eq, t(:), x(:).'), 1)), S));

关于matlab - 如何在元胞数组matlab中找到一行的子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44408921/

相关文章:

matlab - 将数字转换为元胞数组行中的数字序列

python - FFT 结果 Matlab VS Numpy (Python) : not the same results

javascript - 使用 Javascript 从 HTML 表格输入单元格获取值

swift - 无法根据背景颜色快速禁用单元格

android - 在 Android 中动态添加子项到 ListView

matlab - 使用 matlab 在图像顶部生成热图

c++ - cv::equalizeHist 和 matlab histeq() 之间有什么区别

Swift - 单击行后在 TableView 中显示每行的数据

android - ListView 子项的 onclicklistener

c# - ListView 项中的多个文本项