Matlab数组A中删除数组B的元素


写在前面

Matlab中,删除数组A中数组B的元素。
思路1为:使用ismember函数判断B是否为A中元素,返回值为0/1逻辑值L,取A(~L)即为剔除B中的结果。
思路2为:使用setdiff函数,返回在A中有,而B中没有的值,结果向量将以升序排序返回。


1 ismember函数

clc;
clear;

A = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9];
B = [2, 5, 9, 11, 23];
isB = ismember(A, B);
C = A(~isB);

结果如下:

A =  1     2     3     4     5     6     7     0     8     9
B =  2     5     9    11    23
C =  1     3     4     6     7     0     8

此时,数组C中的结果时按照A中的序列进行排列。


2 setdiff函数

clc;
clear;

A = [1, 2, 3, 4, 5, 6, 7, 0, 8, 9];
B = [2, 5, 9, 11, 23];
[D, ia] = setdiff(A, B);
E = A(sort(ia));

结果如下:

A =
     1     2     3     4     5     6     7     0     8     9
B =
     2     5     9    11    23
D =
     0     1     3     4     6     7     8
ia =
     8
     1
     3
     4
     6
     7
     9
E =
     1     3     4     6     7     0     8

可以看到, D中的结果时按照升序的顺序进行排列。如果需要按照A中的序列进行排列的话,只需记录下每个元素的位置即可:代码[D, ia] = setdiff(A, B)中的ia记录的是每个元素的原始位置,再返回到A中提取即可得到按照A中顺序排列的E。

  • 16
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
MATLAB,可以通过将数组的特定元素为空来删除元素。具体地,可以使用下标索引来定位要删除元素所在的位置,并将其赋为空。例如,如果要删除数组A的第三个元素,可以使用以下代码实现: A(3) = []; 这将删除数组A的第三个元素。请注意,删除数组元素时,索引必须是完整的行或列,不能是数组内部的元素块或单个元素。因此,如果要删除多个元素,可以使用循环或其他方法来遍历所有要删除的索引,并执行相应的删除操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [(matlab编程基础)数组的基本操作](https://blog.csdn.net/weixin_56691527/article/details/128430339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Matlab数组A删除数组B的元素](https://blog.csdn.net/L_J_Kin/article/details/109776059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-Chin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值