?? distance_o_std.asv
字號:
function distance_o_std(filename,train_num,chara_num)
Temp_Data=xlsread(filename);
Cork_Data=Temp_Data(:,2:(1+chara_num));
Temp1=max(Cork_Data);
Temp2=min(Cork_Data);
Max_min=Temp1-Temp2;
Template=zeros(3,chara_num); %這句話的意思是初始化三個標(biāo)準(zhǔn)模板,因為每個模板有10個特征,所以模板的大小是3*10
for ii = 1:3
Temp = Cork_Data((1+(ii-1)*50):(train_num+(ii-1)*50),:); %這個命令的意思就是取每一類的前20個樣品.
for k=1:20
Temp(k,:)=Temp(k,:)./Max_min;
end
Template(ii,:) = mean(Temp); %這個命令其實(shí)有兩個功能,一是計算前20行的平均值(也就是優(yōu)等品的標(biāo)準(zhǔn)模板),另一個是把優(yōu)等品的模板存在Template的第一行中.
end
ojl_Num=0;
Sum1=zeros(3,1);
test_num=(150-3*train_num);
for k=1:test_num
if k<=test_num/3
Sample=Cork_Data((train_num+k),:);
for ii=1:3
Sum1(ii,1)=sqrtm(sum((Sample-Template(ii,:)).^2));
end
[Result,I1]=min(Sum1);
if I1==1
ojl_Num=ojl_Num+1;
end
else if k>test_num/3 && k<=test_num*2/3
Sample=Cork_Data((2*train_num+k),:);
for ii=1:3
Sum1(ii,1)=sqrtm(sum((Sample-Template(ii,:)).^2));
end
[Result,I1]=min(Sum1);
if I1==2
ojl_Num=ojl_Num+1;
end
else if k>test_num*2/3
Sample=Cork_Data((3*train_num+k),:);
for ii=1:3
Sum1(ii,1)=sqrtm(sum((Sample-Template(ii,:)).^2));
end
[Result,I1]=min(Sum1);
if I1==3
ojl_Num=ojl_Num+1;
end
end
end
end
end
disp('歐幾里德識別率是:');
ojl_Num/test_num
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -