?? cork_abs_2.asv
字號(hào):
function
Temp_Data=xlsread('cork.xls');
%好,在Temp_Data里,第一列是樣品的類別,第2列到第11列是樣品的特征,也就是說,一個(gè)樣品用10個(gè)特征來描述。
%因此,我們要從Temp_Data里讀出第2列到第11列的數(shù)據(jù),并把它保存在另一個(gè)矩陣Cork_Data里.Cork_Data的大小是150行10列.
%這個(gè)命令也由你們來寫.提示:Cork_Data其實(shí)是Temp_Data的所有行,第2到第11列.
Cork_Data = Temp_Data(:,2:11);
Temp1=max(Cork_Data);
Temp2=min(Cork_Data);
Max_min=Temp1-Temp2;
%好的.現(xiàn)在開始訓(xùn)練了.我們的方法是從第一類的50個(gè)樣品中取出前20個(gè),然后把這20個(gè)樣品的特征平均一下,得到一個(gè)模板,這個(gè)模板就是優(yōu)等品的標(biāo)準(zhǔn)模板.
Template=zeros(3,10); %這句話的意思是初始化三個(gè)標(biāo)準(zhǔn)模板,因?yàn)槊總€(gè)模板有10個(gè)特征,所以模板的大小是3*10
for ii = 1:3
Temp = Cork_Data(1+(ii-1)*50:20+(ii-1)*50,:); %這個(gè)命令的意思就是取每一類的前20個(gè)樣品.
for k=1:20
Temp(k,:)=Temp(k,:)./Max_min;
end
Template(ii,:) = mean(Temp); %這個(gè)命令其實(shí)有兩個(gè)功能,一是計(jì)算前20行的平均值(也就是優(yōu)等品的標(biāo)準(zhǔn)模板),另一個(gè)是把優(yōu)等品的模板存在Template的第一行中.
end
CorrectNum = 0; %初始化記錄判斷正確的計(jì)數(shù)器
%生成測(cè)試集,這個(gè)集里面有90個(gè)樣品
Test_Data = Cork_Data([21:50,71:100,121:150],:);
%生成測(cè)試集的類別庫(kù),也就是說,這里保存的是每個(gè)樣品的真實(shí)類別
Test_Class = Temp_Data([21:50,71:100,121:150],1);
%開始進(jìn)行循環(huán)測(cè)試
for ii = 1:90
Sum =zeros(3,1); %因?yàn)橛欣奂拥倪^程,所以先初始化記錄累加和的變量
Sample = Test_Data(ii,:)./Max_min; %Sample代表當(dāng)前待測(cè)目標(biāo),取第21個(gè)樣品的特征
for jj=1:3
Sum(jj,1)=sum(abs(Sample-Template(jj,:))); %矩陣是可以對(duì)分別進(jìn)行計(jì)算的,所以一次性就能得到對(duì)應(yīng)的結(jié)果.MATLAB認(rèn)大小寫,所以Sum和sum是兩碼事.
end
%Sum是三行一列,我們來比較哪個(gè)數(shù)小,并得到最小那個(gè)數(shù)的索引號(hào).
[Result,I] = min(Sum); %Result是最小的那個(gè)數(shù),我們其實(shí)是用不到的,就看I,它表示是哪個(gè)數(shù)是小.
if I==Test_Class(ii,1) %Temp_Data(21,1)表示第21個(gè)樣品的真實(shí)類別,如果二者相等,表明計(jì)算機(jī)判斷正確.
CorrectNum = CorrectNum + 1;
end
end
%上面這是絕對(duì)值距離法
disp('用絕對(duì)值距離法的識(shí)別率:');
CorrectNum/90
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -