⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distance_o_std.m

📁 用matlab实现的几种模式识别的方法
💻 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 + -