看板 MATLAB 關於我們 聯絡資訊
各位好 想請問一下 我的題目是 每個病患都有五個基因 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
jatj:X={'gg' 'aa' 'cc' 'ca' 'gg'}; Y=nchoosek(X,2); 3 4 ... 04/11 07:52
yshlai:可是我每個基因裡各有3種種類{'gg' 'aa' 'cc' 'ca' 'gg'} 04/12 01:17
yshlai:只是其中一種 04/12 01:17