1. 程式人生 > >用MATLAB求多個集合的交集

用MATLAB求多個集合的交集

%將每一個集合放入矩陣的每一行,集合元素個數小於其他集合用零補齊

 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