在 Matlab 中计算元胞数组的并集

发布于 2024-09-14 10:27:06 字数 253 浏览 6 评论 0原文

我有一个元胞数组,其中每个元素都由 id 向量组成。我喜欢计算元胞数组中所有元素的并集。这是我当前的解决方案,但我觉得它可以矢量化或者有一个更优雅的解决方案:

union_ids = union(encounter_ids{1},encounter_ids{2});
for i=3:1:numel(encounter_ids);
    union_ids = union(union_ids,encounter_ids{i});
end

I have a cell array where each element consists of a vector of ids. I like to compute the union of all elements in the cell array. This is my current solution, but I feel it can be vectorized or have a more elegant solution:

union_ids = union(encounter_ids{1},encounter_ids{2});
for i=3:1:numel(encounter_ids);
    union_ids = union(union_ids,encounter_ids{i});
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜柠檬 2024-09-21 10:27:06

如果元胞数组元素是行向量,您可以这样做:

union_ids = unique( [encounter_ids{:}] );

相反,如果它们是列向量,则使用:

union_ids = unique( vertcat(encounter_ids{:}) );

如果您不确定,或者它们恰好都是(有些是行向量,有些是列),那么您可以强制它们都是列向量:

encounter_ids = cellfun(@(c)c(:), encounter_ids, 'UniformOutput',false);
union_ids = unique( vertcat(encounter_ids{:}) );

If the cell array elements are row vectors, you can do this:

union_ids = unique( [encounter_ids{:}] );

instead if they are column vectors, then use:

union_ids = unique( vertcat(encounter_ids{:}) );

If you are unsure, or they happen to be both (some are row vectors, some are columns), then you can force them to be all column vectors:

encounter_ids = cellfun(@(c)c(:), encounter_ids, 'UniformOutput',false);
union_ids = unique( vertcat(encounter_ids{:}) );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文