[問題]比對 排列組合
各位好
想請問一下
我的題目是
每個病患都有五個基因
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
04/11 07:52, 1F
→
04/12 01:17, , 2F
04/12 01:17, 2F
→
04/12 01:17, , 3F
04/12 01:17, 3F