用MATLAB求多個集合的交集
阿新 • • 發佈:2019-02-05
%將每一個集合放入矩陣的每一行,集合元素個數小於其他集合用零補齊
a=input('請輸入集合的矩陣')b=size(a,1);%判斷有多少行
[m,n]=size(a);
c=zeros(1,m+n);%建立一個一維矩陣存放每倆個集合的交集元素
cc=zeros(1,m+n);%存放所有集合的交集
v=0;%為了判斷集合
for i=1:b%外層迴圈從第一行開始,再從第二行開始
for j=(i+1):b%從上一個開始到結尾
c=[intersect(a(i,:),a(j,:)),c];%將每輛個交集的元素放在一個集合裡面
end
end
for i=1:(m+n)
d=find(c==c(i));
t=length(d);%判斷元素出現的次數是否和輸入的集合次數相當
if(t==b)%如果相等
cc=[cc,c(i)];%把相等的放在一起
if(c(i)==0)%防止初始零元素和交集的零元素衝突
v=1;
end
end
end
cc=unique(cc);%去除重複元素
if cc==0
disp('無交集')
return
end
disp('集合的交集為')
if v==1
disp(cc)
else
disp(cc(find(cc~=0)))%輸出集合中非零元素
end