Matlab 集合运算(前身:剔除数组A中与数组B相同的元素)

一、函数(走的弯路)

首发于2021-03-23

function data=msubmat(all,lack)
n=length(lack);
for i=1:n
    all(find(all==lack(i)))=[];
end
data=all;
end

调用:

clc;clear
all=[1:36];
lack=[6 10 16 17 20 22 23 28 29 32 34 35];
data=msubmat(all,lack);

在这里插入图片描述
即使数组B中存在数组A中没有的元素也可。


补于2021-04-10
最近发现matlab自带了一些好用的集合运算函数,上面我要实现的功能,一行代码轻松搞定:

C = setdiff(all,lack);

二、集合运算

参考: https://blog.csdn.net/wangh0802/article/details/70142163

名称代码
交集C=intersect(A, B);
并集C=union(A,B);
唯一性C=unique(A);
各自独有C = setxor(A,B);
A独有C = setdiff(A,B);
判断b是否是A的元素[tf, index] = ismember(A,b);
判断集合是否排序issorted(A),可用sort排序
把数组A和B按指定的维数d连接起来,d1列需列相同,2行cat(d,A,B)

关于每个函数,都有另一种调用形式(以交集为例):[C,IA,IB] = intersect(A,B);其中C便是A和B交集的结果,IA是C中元素在A中的索引,IB是C中元素在B中的位置。前一个优先。

表格中介绍的比较简单,下面详细描述一下各个函数的功能:

  • C=intersect(A, B); 将A和B中共有的元素存到C中。
  • C=union(A,B);将A和B中所有元素都存到C中,并且保持元素之间的互异性
  • C=unique(A);使A中的元素保持互异性,将结果存到C中,A不变。
  • C = setxor(A,B);返回A和B中各自独有的元素,保存在C中。意思是,A独有的+B独有的,元素的顺序应该是从小到大(这个不太确定)
  • C = setdiff(A,B);将A独有的元素保存在C中
  • [tf, index] = ismember(A,b);判断b是否是A的元素,返回 逻辑值和索引号
  • issorted(A)判断A是否是已经拍好序的,返回逻辑值
  • A=sort(A);将A拍个序,返回拍好序的数据
  • cat(d,A,B)把数组A和B按指定的维数d连接起来,d=1时,按列拼接,但需列数相同,d=2时,按行拼接,但需行数相同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流浪猪头拯救地球

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

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

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

打赏作者

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

抵扣说明:

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

余额充值