| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 
 | percent=[];%正确率数组for n=1:10
 train=[];test=[];
 index=0;%测试集下标
 for i=1:8
 P=randperm(8);%随机序列
 for j=1:4
 train{i,j}=strcat(int2str(i),int2str(P(j)),'.jpg');%训练集
 end
 for j=5:8
 index=index+1;
 test{index}=strcat(int2str(i),int2str(P(j)),'.jpg');  %测试集
 end
 end
 [M,N]=size(train);%训练集大小
 X=[];
 for i=1:M
 for j=1:N
 name=char(train(i,j));
 img_train=imread(name);%读取训练集图片
 glcm=graycomatrix(img_train,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4
 stats = graycoprops(glcm, 'all');%对比度、相关、能量、均匀度
 out= entropy(img_train); %整幅图的熵
 X(i,j,:)=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%训练集特征向量
 end
 end
 truenum=0;
 for i=1:index
 x=[];
 name=char(test(i));
 img_test=imread(name);%读取测试集图片
 glcm=graycomatrix(img_test,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4
 stats = graycoprops(glcm, 'all');%对比度、相关、能量、均匀度
 out= entropy(img_train); %整幅图的熵
 x=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%测试集特征向量
 gix=[];
 for j=1:M
 odist=[];%第j类的欧式距离数组
 for k=1:N
 a=X(j,k,:);
 a=a(:)';%训练集特征向量
 odist(k)=norm(a-x);%求欧氏距离
 end
 gix(j)=min(odist);%第j类中最小欧氏距离
 end
 [gjx,mindex]=min(gix);%最小欧氏距离及其类别
 fprintf('%s属于第%d类    ',name,mindex);
 if mod(i,4)==0
 fprintf('\n');%每四个换一次行
 end
 num=str2num(name(1));%正确的类别
 if num==mindex
 truenum=truenum+1;%求分类正确的数量
 end
 end
 percent(n)=truenum/32;%求分类正确率
 fprintf('正确率为:%f\n',percent(n));
 end
 fprintf('10次平均正确率为:%f\n',mean(percent));%求平均分类正确率
 
 
 |