如何在Matlab中从双精度数组中删除元素子集?数组是有序的并且是一维的。
\n例如,给定
\nA=[1,3,5,6,7];\na=[3,6];\nRun Code Online (Sandbox Code Playgroud)\n欲望
\nA_a=[1,5,7];\nRun Code Online (Sandbox Code Playgroud)\n如果a是标量,我可以做A_a=A(A~=a)。a如果不是标量,它如何工作?
我对 na\xc3\xafve 循环的担忧A_a=A(A~=a(i))是,似乎对于每个元素a(i),都会对 中的每个元素进行比较A,这忽略了两个数组中的基本顺序。
以下是执行此操作的几种方法:
1.用于ismember创建逻辑索引:
A_a = A(~ismember(A, a))
Run Code Online (Sandbox Code Playgroud)
2. 将A和a视为集合,并使用setdiff
A_a = setdiff(A, a)</del>
Run Code Online (Sandbox Code Playgroud)
3. 用于arrayfun生成逻辑索引
A_a = A(arrayfun(@(x)~any(x==a), A))
Run Code Online (Sandbox Code Playgroud)
4. 好的老式 for 循环
A_a = []
for element = A
if ~any(a == element)
A_a(end+1) = element ;
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |