📄 distance_o_std.m
字号:
function distance_o_nor(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); %这句话的意思是初始化三个标准模板,因为每个模板有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); %这个命令其实有两个功能,一是计算前20行的平均值(也就是优等品的标准模板),另一个是把优等品的模板存在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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -