gpt4 book ai didi

matlab - 如何在 Matlab 中从有序 double 组中删除元素子集

转载 作者:行者123 更新时间:2023-12-02 01:25:40 28 4
gpt4 key购买 nike

如何在 Matlab 中从 double 组中删除元素子集?数组是有序的并且是一维的。

例如,给定

A=[1,3,5,6,7];
a=[3,6];

欲望

A_a=[1,5,7];

如果a是标量,我可以做A_a=A(A~=a)。如果 a 不是标量,它如何工作?

我对围绕 A_a=A(A~=a(i)) 的天真循环的担忧是,看起来,对于每个元素 a(i),都有一个比较是为 A 中的每个元素创建的,它忽略了 2 个数组中的基本顺序。

最佳答案


这里有几种方法可以做到这一点:

1.使用 ismember 创建逻辑索引:

A_a = A(~ismember(A, a))

2.将 A 和 a 视为集合,并使用 setdiff

A_a = setdiff(A, a)</del>
  • 编辑:请注意,如 Luis Mendo指出,这也会删除 A 中的重复值,这可能是不可取的。

3.使用arrayfun生成逻辑索引

A_a = A(arrayfun(@(x)~any(x==a), A))

4.很好的老式 for 循环

A_a = []
for element = A
if ~any(a == element)
A_a(end+1) = element ;
end
end

关于matlab - 如何在 Matlab 中从有序 double 组中删除元素子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74761619/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com