[問題]比對 排列組合

看板MATLAB作者 (YshLai)時間12年前 (2013/04/11 00:03), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
各位好 想請問一下 我的題目是 每個病患都有五個基因 ex gg aa cc ca gg 有/無高血壓 每個基因都有3種類型 五個基因會影響有無高血壓 現在要分別取 4,3,2個基因做比對 首先是用pso 撒10個例子 去比對原資料庫 以下是我目前寫的 找出4個基因 去比對 問題來了 4個一組 只有5種組合 我用最笨的方法寫 但是現在要用3個一組 2個一組 排列組合變多 請問有什麼方法可以自己取排列組合 還是MATLAB新手 請多多指教 clear;clc;clear all; %% 讀檔 Data=xlsread('Data.xls'); DataSize=size(Data); %% 創造 10 個粒子 for i=1:10 particle(i,1:4)=randsrc(1,4,1:3); end particleSize=size(particle); Record=[]; k=1;%Index of Record A_index=1; %% 比對 for i=1:DataSize(1) for j=1:particleSize(1) %% 根據不同的組合進行比對 if Data(i,[1,2,3,4])==particle(j,1:end) Record(k,1:2)=[1,j];%%如果與第j例子相同,則紀錄第一組與第j個例子 k=k+1; end if Data(i,[1,2,3,5])==particle(j,1:end) Record(k,1:2)=[2,j]; k=k+1; end if Data(i,[1,2,4,5])==particle(j,1:end) Record(k,1:2)=[3,j]; k=k+1; end if Data(i,[1,3,4,5])==particle(j,1:end) Record(k,1:2)=[4,j]; k=k+1; end if Data(i,[2,3,4,5])==particle(j,1:end) Record(k,1:2)=[5,j]; k=k+1; end end end Record=sort(Record); Recordzie=size(Record); for i=1:Recordzie(1) if Record(i,1)==1 A(A_index,1:2)=Record(i,1:end) A_index=A_index+1; Final(1,1)=mode(A(1:end,2)) end if Record(i,1)==2 A(A_index,1:2)=Record(i,1:end) A_index=A_index+1; Final(2,1)=mode(A(1:end,2)) end if Record(i,1)==3 A(A_index,1:2)=Record(i,1:end) A_index=A_index+1; Final(3,1)=mode(A(1:end,2)) end if Record(i,1)==4 A(A_index,1:2)=Record(i,1:end) A_index=A_index+1; Final(4,1)=mode(A(1:end,2)) end if Record(i,1)==5 A(A_index,1:2)=Record(i,1:end) A_index=A_index+1; Final(5,1)=mode(A(1:end,2)) end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.132.33

04/11 07:52, , 1F
X={'gg' 'aa' 'cc' 'ca' 'gg'}; Y=nchoosek(X,2); 3 4 ...
04/11 07:52, 1F

04/12 01:17, , 2F
可是我每個基因裡各有3種種類{'gg' 'aa' 'cc' 'ca' 'gg'}
04/12 01:17, 2F

04/12 01:17, , 3F
只是其中一種
04/12 01:17, 3F
文章代碼(AID): #1HPOqzwO (MATLAB)