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

标签 matlab

如何在 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/

相关文章:

macos - 创建 Matlab 运行行快捷方式(如 R)

matlab - R2016a 中的 patch() 有错误吗?

iphone - 如何使用 MATLAB Mobile 访问 Iphone 相机

matlab - 具有包装方法的集成分类器

arrays - 在 MATLAB 中将数组转换为字符串?

arrays - 删除矩阵中的零并减小大小

matlab - 在父类(super class)方法中修改子类的不可变/ protected 变量

matlab - SciLab 复选框 UIControl 值不随状态变化?

python - 在 python 中运行 matlab 脚本-错误

matlab - 在 Opencv C++ 中估计几何变换