• 基于Matlab的小学毕业班成绩总评模糊聚类分析


    目录
    一、实验目的………………………………………………2
    二、实验环境………………………………………………2
    三、实验内容………………………………………………2
    1、实际问题…………………………………………………2
    2、问题分析…………………………………………………4
    3、实验原理及步骤…………………………………………4
    四、实验结果…………………………………………………6
    五、结果分析…………………………………………………8
    六、程序源码…………………………………………………8
    一、实验目的
    1、应用模糊数学分析实际问题,掌握分析数据的方法。
    2、用模糊聚类方法分析数据,并解决实际问题。
    3、熟悉Matlab程序,编程实现模糊聚类分析。
    二、实验环境
    Matlab7.1
    三、实验内容
    1、实际问题
    小学生毕业班成绩总评中模糊聚类分析方法:根据后屯小学2011年六年(2)班 9月份毕业成绩汇总表,对新毕业的小学生们的毕业成绩评价工作,并据此选出7名优秀毕业生。从应用数学角度来看,评价本质上是一项排名工作。为了是使排名录取更趋科学、合理、可信,我们综合决策过程中的模糊信息,建立模糊数学模型,利用模糊聚类分析方法,根据聚类结果来确定每位学生的排名结果。针对毕业生4科成绩表(如下)建立模型,分析结果。

    function F_Jlfx(bzh,cs,X)%定义函数
    X=F_JlSjBzh(bzh,X);%标准化准换
    R=F_JlR(cs,X);%模糊聚类分析建立模糊相似矩阵
    fprintf('得到模糊相似矩阵如下:\n');
    R
    [m,n]=size(R);
    if(m~=n||m==0)return;end
    F_JlDtjl(R);
    function[X]=F_JlSjBzh(cs,X)%定义函数
    if(cs==2)%平移·极差变换
        for(k=1:m)xmin=X(1,k);xmax=X(1,k);
    		for(i=1:n)
                if(xmin>X(i,k))xmin=X(i,k);end
                if(xmax<X(i,k))xmax=X(i,k);end
            end
    		for(i=1:n)X(i,k)=(X(i,k)-xmin)/(xmax-xmin);end
        end
    function[R]=F_JlR(cs,X)%定义函数
    [n,m]=size(X);%获得矩阵的行列数
    cs=8;
    R=[];
    if(cs==3)%相关系数法
    	for(i=1:n)for(j=1:n)xi=0;xj=0;
    		for(k=1:m)xi=xi+X(i,k);xj=xj+X(j,k);end
    		xi=xi/m;xj=xj/m;xis=0;xjs=0;
    		for(k=1:m)xis=xis+(X(i,k)-xi)^2;xjs=xjs+(X(j,k)-xj)^2;end
    		s=sqrt(xis*xjs);R(i,j)=0;
    		for(k=1:m)R(i,j)=R(i,j)+abs((X(i,k)-xi)*(X(j,k)-xj));end
    		R(i,j)=R(i,j)/s;
    end;end
    function F_JIDtjl(R)%定义函数
    %模糊聚类分析动态聚类
    %R模糊相似矩阵
    [m,n]=size(R);%获得矩阵的行列数
    if(m~=n|m==0)return;end
    for(i=1:n)R(i,i)=1;%修正错误
        for(j=i+1:n)
            if(R(i,j)<0)R(i,j)=0;elseif(R(i,j)>1)R(i,j)=1;end
            R(i,j)=round(10000*R(i,j))/10000;%保留四位小数
            R(j,i)=R(i,j);
        end
        js0=0;
        while(1)%求传递闭包
            R1=Max_Min(R,R);
            js0=js0+1;
            if(R1==R)
                break;
            else
                R=R1;
            end
        end
        lmd(1)=1;k=1;
        for(i=1:n)for(j=i+1:n)pd=1;%找出所有不同元素
                for(x=1:k)if(R(i,j)==lmd(x))pd=0;break;end;end
                if(pd)k=k+1;lmd(k)=R(i,j);end
            end;
        end
        for(i=1:k-1)
            for(j=i+1:k)
                if(lmd(i)<lmd(j))%从大到小排序
                    x=lmd(j);
                    lmd(j)=lmd(i);
                    lmd(i)=x;
                end;
            end;
        end
        for(x=1:k)%按lmd(x)分类,分类数为flsz(x),临时用Sz记录元素序号
            js=0;
            flsz(x)=0;
            for(i=1:n)pd=1;
                for(y=1:js)
                    if(Sz(y)==i)
                        pd=0;
                        break;
                    end;
                end
                if(pd)
                    for(j=1:n)
                        if(R(i,j)>=lmd(x))
                            js=js+1;
                            Sz(js)=j;
                        end;
                    end
                    flsz(x)=flsz(x)+1;
                end
            end
        end
        for(i=1:k-1)
            for(j=i+1:k)
                if(flsz(j)==flsz(i))
                    flsz(j)=0;
                end;
            end;
        end
        fl=0;%排除相同的分类
        for(i=1:k)
            if(flsz(i))
                fl=fl+1;
                lmd(fl)=lmd(i);
            end;
        end
        for(i=1:n)
            xhsz(i)=i;
        end
        for(x=1:fl)%获得分类情况:对分类元素进行排序
            js=0;flsz(x)=0;
            for(i=1:n)
                pd=1;
                for(y=1:js)
                    if(Sz(y)==i)
                        pd=0;
                        break;
                    end;
                end
                if(pd)
                    if(js==0)y=0;end
                    for(j=1:n)
                        if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;
                        end;
                    end
                    flsz(x)=flsz(x)+1;
                    Sz0(flsz(x))=js-y;
                end
            end
            js0=0;
            for(i=1:flsz(x))
                for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end
                for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz(j);end;end;end;
            end
            for(i=1:n)xhsz(i)=Sz(i);
            end
        end
        for(x=1:fl)%获得分类情况:每一子类的元素个数
            js=0;flsz(x)=0;
            for(i=1:n)pd=1;
                for(y=1:js)if(Sz(y)==i)pd=0;break;end;end
                if(pd)if(js==0)y=0;end
                    for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end
                    flsz(x)=flsz(x)+1;Sz0(flsz(x))=js-y;
                end
            end
            js0=1;
            for i=1;flsz(x)
                y=1;
                for(j=1:flsz(x))
                    if(Sz(y)==xhsz(js0))
                        flqksz(x,i)=Sz0(j);
                        js0=js0+Sz0(j);
                        break;
                    end
                    y=y+Sz0(j);
                end
            end
        end
    end
    figure('name','动态聚类图','color','w');
    axis('off');
    Kd=30;Gd=40;y=fl*Gd+Gd;lx=80;
    text(24,y+Gd/2,'¦Ë');
    for(i=1:n)
        text(lx-5+i*Kd-0.4*Kd*(xhsz(i)>9),y+Gd/2,int2str(xhsz(i)));
        line([lx+i*Kd,lx+i*Kd],[y,y-Gd]);
        linesz(i)=lx+i*Kd;
    end
    text(lx*1.5+i*Kd,y+Gd/2,'分类数');
    y=y-Gd;
    for(x=1:fl)
        text(8,y-Gd/2,num2str(lmd(x)));
        js0=1;js1=0;
        if(x==1)
            for(i=1:flsz(x))
                js1=flqksz(min(i,2),x)-1;
                if(js1) 
                    line([linesz(min(max(js0,1),9)),linesz(min(9,max(js0+js1,1)))],[y,y]);
                end
                line([(linesz(min(9,max(js0+js1,1)))+linesz(min(9,max(js0,1))))/2,(linesz(min(9,max(js0+js1,1)))+linesz(min(9,max(js0,1))))/2],[y,y-Gd]);
                linesz(min(9,i))=(linesz(min(9,max(js0+js1,1)))+linesz(min(9,max(js0,1))))/2;
                js0=js0+js1+1;
            end
        else for(i=1:flsz(x))
                js1=js1+flqksz(x,i);
                js2=0;pd=0;
                for(j=1:flsz(x-1))
                    js2=js2+flqksz(j,x-1);
                    if(js2==js1) pd=1;break;end
                end
                if(j~=js0) line([linesz(js0),linesz(j)],[y,y]);end
                line([(linesz(js0)+linesz(j))/2,(linesz(js0)+linesz(j))/2],[y,y-Gd]);
                linesz(i)=(linesz(js0)+linesz(j))/2;
                js0=j+1;
            end;end
        text(2*lx+n*Kd,y-Gd/3,int2str(flsz(x)));
        y=y-Gd;
    end
     
    end
    
    • 1
    • 2
    • 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
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Infragistics 2022.1 Sources【源码】
    简单认识时间复杂度和空间复杂度
    webpack proxy如何解决跨域?
    初出茅庐:主程的历练
    【零基础学QT】第八章 文件操作,网络文件传输实验
    golang八股文整理(持续搬运)
    排序算法--插入排序
    BFS总结【二叉树+状态压缩】
    六级词汇讲义
    太空射击第17课: Game Over (結束)
  • 原文地址:https://blog.csdn.net/newlw/article/details/127459032