为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

灰色关联度matlab源程序(完整版)

2022-03-07 4页 doc 107KB 4阅读

用户头像 个人认证

sxymh

从事多年建筑工程施工安全、工程技术、设计方案积累了丰富经验

举报
灰色关联度matlab源程序(完整版)-.z.灰色关联度matlab源程序(完整版)最近几天一直在写算法,其实网上可以下到这些算法的源程序的,但是为了搞懂,搞清楚,还是自己一个一个的看了,写了,作为自身的积累,而且自己的的矩阵计算类库也迅速得到补充,以后关于算法方面,基本的矩阵运算不用再重复写了,挺好的,是种积累,下面把灰关联的matlab程序与大家分享。灰色关联度分析法是将研究对象及影响因素的因子值视为一条线上的点,与待识别对象及影响因素的因子值所绘制的曲线进行比较,比较它们之间的贴近度,并分别量化,计算出研究对象与待识别对象各影响因素之间的贴近程度的关联度,通...
灰色关联度matlab源程序(完整版)
-.z.灰色关联度matlab源程序(完整版)最近几天一直在写算法,其实网上可以下到这些算法的源程序的,但是为了搞懂,搞清楚,还是自己一个一个的看了,写了,作为自身的积累,而且自己的的矩阵计算类库也迅速得到补充,以后关于算法方面,基本的矩阵运算不用再重复写了,挺好的,是种积累,下面把灰关联的matlab程序与大家分享。灰色关联度分析法是将研究对象及影响因素的因子值视为一条线上的点,与待识别对象及影响因素的因子值所绘制的曲线进行比较,比较它们之间的贴近度,并分别量化,计算出研究对象与待识别对象各影响因素之间的贴近程度的关联度,通过比较各关联度的大小来判断待识别对象对研究对象的影响程度。简言之,灰色关联度分析的意义是指在系统发展过程中,如果两个因素变化的态势是一致的,即同步变化程度较高,则可以认为两者关联较大;反之,则两者关联度较小。因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态(Dynamic)的历程分析。灰色关联度可分成"局部性灰色关联度”与"整体性灰色关联度”两类。主要的差别在于局部性灰色关联度有一参考序列,而整体性灰色关联度是任一序列均可为参考序列。关联度分析是基于灰色系统的灰色过程,进行因素间时间序列的比较来确定哪些是影响大的主导因素,是一种动态过程的研究。关联度计算的预处理,一般初值化或者均值化,根据我的实际需要,本程序中使用的是比较序列与参考序列组成的矩阵除以参考序列的列均值等到的,当然也可以是其他。%注意:由于需要,均值化方法采用各组值除以样本的各列平均值clear;clc;yangben=[47.92437525.168125827.4105438330.088751045.164375261.37437516.33726.62940.2824709.2752962.128484.87455.6966666730.80333333885.21275.80666671052.42435.81];%样本数据fangzhen=[36.2714.59836.15420.411011.83189.5464.7335.63755.45331.32978.5257.8742.4423.07846348.051025.4296.6959.3439.7794.31334.631016.4317.2752.9117.14821.79306.921141.94122.044.214.861815.522584.68963.610.006.012.431791.612338.171278.0830.873.011.581220.54956.141244.753.9125.657.42790.17328.881026.0192.82115.8027926.5350.931079.49544.3812.638.751055.501379.00875.101.65];%待判数据[rows,cols]=size(fangzhen);p=0.5;   %分辨系数[m,n]=size(yangben);      R=[];forirow=1:rows    yy=fangzhen(irow,:);    data=[yy;yangben];    data_gyh1=mean(yangben)    fori=1:m+1        forj=1:n            data_gyh(i,j)=data(i,j)/data_gyh1(j);        end    end        fori=2:m+1        forj=1:n            Dij(i-1,j)=abs(data_gyh(1,j)-data_gyh(i,j));        end    end    Dijma*=ma*(ma*(Dij));    Dijmin=min(min(Dij));        fori=1:m        forj=1:n            Lij(i,j)=(Dijmin+p*Dijma*)/(Dij(i,j)+p*Dijma*);        end    end        LijRowSum=sum(Lij');        fori=1:m        Rij(i)=LijRowSum(i)/n;    end    R=[R;Rij];endRmatlab求灰色关联度矩阵源代码2010-12-1122:57functiongreyrelationaldegree(*,c)%GRAYRELATIONALDEGREEthisfunctionisusedforcalculatingthegery%relationbetweensquence%rememeberthatthefirstcolumnoftheinputmatri*isthedesicion%attributionsquences.whatwewanttocalculateisthegreyralationaldegreebetween%itandotherattributions%*isthesquencematri*,cistheparameterusedinthefunction%inmostofthetime,thevalueofcis0.5firstrow=*(1,:);reci_firstrow=1./firstrow;reci_convert=diag(reci_firstrow);initialMIRROR=**reci_convert;%findtheinitialvaluemirrorofthesequcematri*A=initialMIRROR'[nrow,ncolumn]=size(A);for(i=2:nrow)   C=A(i,:)-A(1,:)   D=abs(C);   eval(['B'num2str(i)'=D']);   ama*=ma*(eval(['B'num2str(i)]))   amin=min(eval(['B'num2str(i)]))   ma*array(i-1)=ama*   minarray(i-1)=aminend%findthedifferencesquenceandthema*valueandminvalueofeachsquencema*ma*=ma*(ma*array)minmin=min(minarray)for(i=2:nrow)   for(j=1:ncolumn)       eval(['greyrelationdegree'num2str(i)'(j)=(minmin+c*ma*ma*)/(B'num2str(i)'(j)+c*ma*ma*)'])   endend%calculatethegreyralationaldegreeofeachdatafor(i=2:nrow)  eval(['greyrelatioanaldegree_value'num2str(i)'=mean(greyrelationdegree'num2str(i)')' ])   end基于matlab灰色关联度计算的实现2006年07月28日星期五上午11:06functionr=incident_degree(*0,*1)%computetheincidentdegreeforgreymodel.%DesignedbyNI*IUHUI,DalianFisherUniversity.%17August,2004,LastmodifiedbyN*Hat21August,2004      %数据初值化处理*0_initial=*0./*0(1);temp=size(*1);b=repmat(*1(:,1),[1temp(2)]);*1_initial=*1./b;%分辨系数选择K=0.1;disp('Thegreyinterconnectdegreeis:');*0_e*t=repmat(*0_initial,[temp(1)1]);contrast_mat=abs(*0_e*t-*1_initial);delta_min=min(min(contrast_mat));%delta_min在数据初值化后实际为零delta_ma*=ma*(ma*(contrast_mat));a=delta_min+K*delta_ma*;incidence_coefficient=a./(contrast_mat+K*delta_ma*);%得到关联系数r=(sum(incidence_coefficient'))'/temp(2);     %得到邓氏面积关联度我们根据图1的步骤和图2的数据进行编程实现,程序如下:%清除内存空间等clear;closeall;clc;%载入源数据   %其实这里可以载入e*ecl的n=15;                      %参与评价的人数m=4;                       %参与评价的指标个数*_0=zeros(n,m);            %         数据矩阵*_2=zeros(n,m);            %偏差结果的求取矩阵*_3=zeros(n,m);            % 相关系数计算矩阵a1_0=[131817181717181713171813181318];a2_0=[181817171813171318131713131717];a3_0=[48.6743.3343.5641.8939.4743.4437.9741.1439.6739.8334.1140.5834.1930.7521.22];a4_0=[1010.735.45.40.74.20.59.30.852.95.454.22.76];   %指标数*_1=[a1_0',a2_0',a3_0',a4_0'];  %最后使用到的数据矩阵%1寻找参考列*0=[ma*(a1_0),ma*(a2_0),ma*(a3_0),ma*(a4_0)];  %取每列的最大值(指标的最大值)%2计算偏差结果i=1;while(i~=m+1)                                  %为什么这个地方会出问呢   forj=1:1:n       *_2(j,i)=abs(*_1(j,i)-*0(i));   end;   i=i+1;end%3确定偏差的最值error_min=min(min(*_2));error_ma*=ma*(ma*(*_2));%4计算相关系数i=1;p=0.5;while(i~=m+1)   forj=1:1:n       *_3(j,i)=(error_min+p*error_ma*)/(*_2(j,i)+p*error_ma*);   end;   i=i+1;end%*_3    %可以在此观察关联矩阵%5计算各个学生的关连序a=zeros(1,n);forj=1:1:n   fori=1:1:m    a(j)=a(j)+*_3(j,i);  %%%%其实可以直接用sum   end;   a(j)=a(j)/m;          %%%%%%%%%可以改进%%%%%%%%%%HYPERLINK"http://www.zdh1909.com/html/matlab/14545.html"\l"#"123下一页%end%a     %在此可以观测各个学生的序%改进:如果各个指标的所占权重不一样的话,可以添加相应的权系数%6排序b=a';[c,s]=sort(b);fori=1:1:n   d(i)=i;endd=d';result=[dbcs]%7将结果显示出来figure(1);plot(a);figure(2)bar(a);                 %柱状图   最后所得到的结果如图3到图5所示。图3程序运行结果图4曲线图图5柱状图   根据以上三图我们就可以判断出每个学生序列与参考序列(最大值)之间的关系,与最大值的关系越密切,则其关联度越大。根据以上的启示,我用matlab灰度关联分析的想法是:1、参考序列我可以选择已知属于*一类神经元的统计数据,我选择平均值。2、加入一个未知类的数据,与已有类中的数据一起计算他们与平均值的关联度。3、计算出来的关联度我们可以有多种处理思路,如果未知类的关联度不是排在最末,可以认为它属于这一类,或者未知类的关联度大于计算出来的关联度平均值,我们可以认为它属于这一类。   使用关联度进行分类,计算出来的关联度如何使用还是个问题,这个东西是我琢磨出来的,我还没有见到过相关的文献,估计应该可以用,期望以后的专家学者钻研了。参考文献:[1]郝海燕,王斌.大学生综合素质测评的灰色关联分析法[J].承德石油高等专科学校学报,2009,11(2):57-59.上一页12HYPERLINK"http://www.zdh1909.com/html/matlab/14545_3.html"\l"#"3请教一下用MATLAB实现灰色关联分析的程序初始矩阵为*=[1.141.491.692.122.434.325.926.077.85;3.303.473.613.804.004.194.424.614.80;6.006.006.007.507.507.509.009.009.00;1.201.201.801.801.802.402.703.604.00;4.875.896.767.978.8410.0511.3112.2511.64]我写的程序如下:*1=[1.141.491.692.122.434.325.926.077.85;3.303.473.613.804.004.194.424.614.80;6.006.006.007.507.507.509.009.009.00;1.201.201.801.801.802.402.703.604.00;4.875.896.767.978.8410.0511.3112.2511.64]%原始数据5行9列*1=*fori=1:5forj=1:9*(i,j)=*(i,j)/*1(1,j)endend*1=*fori=1:5forj=1:9*(i,j)=abs(*(i,j)-*1(i,1))endendma*=*(1,1)min=*(1,1)fori=1:5forj=1:9if*(i,j)>=ma*ma*=*(i,j)endendendfori=1:5forj=1:9if*(i,j)<=minmin=*(i,j)endendendk=0.5%分辨系数取值l=(min+k*ma*)./(*+k*ma*)%求关联系数矩阵但是运算错误!!!!请教一下高手问题补充:楼下回答的不对,那样虽不会运行错误,但得不到正确的答案怎么没人再给我回答啊555555555其他回答共1条4.00;4.875.896.767.978.8410.0511.3112.2511.64]%原始数据5行9列*1=*%有错,应该为*=*1fori=1:5灰色关联matlab程序浏览次数:170次悬赏分:5|提问时间:2011-5-2519:40|提问者:zjon111clear;clc;yangben=[1240915296187432239926451];%样本数据fangzhen=[2163142658103140453409033979831.54.85.9-0.73.311841204111311021168117591378615781171751910938760513226133068518830801099981373241728282245992781407914593572114830132678156998161587172534217885260772303302];%待判数据[rows,cols]=size(fangzhen);p=0.5;%分辨系数[m,n]=size(yangben);R=[];forirow=1:rowsyy=fangzhen(irow,:);data=[yy;yangben];data_gyh1=mean(yangben)fori=1:m+1forj=1:ndata_gyh(i,j)=data(i,j)/data_gyh1(j);endendfori=2:m+1forj=1:nDij(i-1,j)=abs(data_gyh(1,j)-data_gyh(i,j));endendDijma*=ma*(ma*(Dij));Dijmin=min(min(Dij));fori=1:mforj=1:nLij(i,j)=(Dijmin+p*Dijma*)/(Dij(i,j)+p*Dijma*);endendLijRowSum=sum(Lij');fori=1:mRij(i)=LijRowSum(i)/n;endR=[R;Rij];endR哪里出错了,求高手解答,顺便求结果分析推荐答案data_gyh1=mean(yangben)得到的是一个数,而data_gyh(i,j)=data(i,j)/data_gyh1(j)中data_gyh1(j)你把data_gyh1作为一个数组使用的,所以会出错。追问怎么改合适呢回答其实我不懂灰色关联是什么,所以可能在这个上边帮不了什么忙,你看看灰色关联的原理吧,data_gyh1=mean(yangben)这一句得到的data_gyh1就是一个定值,而data_gyh(i,j)=data(i,j)/data_gyh1(j)中需要用到的是什么值呢,你从这方面下手考虑吧。刚搜了一下,看到了跟你这个类似的源程序。。。。他的样本数据是3*6的,所以data_gyh1=mean(yangben)得到是yangben的每一列的均值,而你的yangben是一行的,所以应该直接让data_gyh1=yangben。个人意见,仅供参考。参考资料:hi.baidu./hfutgiser/blog/item/4dd2ca13bb4ec7866538db9e.html基于matlab的灰度关联分析法(2010-09-2310:12:42)标签:matlab灰度关联分类分类:matlab相关   做了四天的研究生数学建模,感觉做的很一般,应该是没有很好的深入理解题意,而且对于神经元的背景信息不是很清楚,导致了后面的东西没有时间处理,最后一天的熬夜,终于把论文给赶了出来,第二天从早上十点一觉睡到晚上六点半。   关于建模神经元这题主要是分类和聚类问题,前者是类别已知,然后判断测试样本是否为*一类。后者是无监督学习,即么有类别信息和其他先验知识,一般要求满足最大组内相似性和最小组间相似性。我想到了上学期给同学做的一个使用灰度关联分析法进行大学生综合素质评价的东西,下面主要讲一下那个东西是怎么实现的。   多指标综合测评主要有三大类方法:常规数学方法、模糊数学方法、多元统计分析方法。灰色关联分析是灰色系统理论中的一个分支,其对数据的要求不是很严格,不要求数据分布具有特殊规律。下面我按照参考文献1中的把综合素质评价的程序给实现。下面是灰度关联法进行综合评价的步骤:图1灰度关联分析法进行综合测评的步骤图2所使用的综合评价表   我们根据图1的步骤和图2的数据进行编程实现,程序如下:%清除内存空间等clear;closeall;clc;%载入源数据   %其实这里可以载入e*ecl表格的n=15;                      %参与评价的人数m=4;                       %参与评价的指标个数*_0=zeros(n,m);            %         数据矩阵*_2=zeros(n,m);            %偏差结果的求取矩阵*_3=zeros(n,m);            % 相关系数计算矩阵a1_0=[131817181717181713171813181318];a2_0=[181817171813171318131713131717];a3_0=[48.6743.3343.5641.8939.4743.4437.9741.1439.6739.8334.1140.5834.1930.7521.22];a4_0=[1010.735.45.40.74.20.59.30.852.95.454.22.76];   %指标数*_1=[a1_0',a2_0',a3_0',a4_0'];  %最后使用到的数据矩阵%1寻找参考列*0=[ma*(a1_0),ma*(a2_0),ma*(a3_0),ma*(a4_0)];  %取每列的最大值(指标的最大值)%2计算偏差结果i=1;while(i~=m+1)                                  %为什么这个地方会出问题呢   forj=1:1:n       *_2(j,i)=abs(*_1(j,i)-*0(i));   end;   i=i+1;end%3确定偏差的最值error_min=min(min(*_2));error_ma*=ma*(ma*(*_2));%4计算相关系数i=1;p=0.5;while(i~=m+1)   forj=1:1:n       *_3(j,i)=(error_min+p*error_ma*)/(*_2(j,i)+p*error_ma*);   end;   i=i+1;end%*_3    %可以在此观察关联矩阵%5计算各个学生的关连序a=zeros(1,n);forj=1:1:n   fori=1:1:m    a(j)=a(j)+*_3(j,i);  %%%%其实可以直接用sum   end;   a(j)=a(j)/m;          %%%%%%%%%可以改进%%%%%%%%%%%end%a     %在此可以观测各个学生的序%改进:如果各个指标的所占权重不一样的话,可以添加相应的权系数%6排序b=a';[c,s]=sort(b);fori=1:1:n   d(i)=i;endd=d';result=[dbcs]%7将结果显示出来figure(1);plot(a);figure(2)bar(a);                 %柱状图   最后所得到的结果如图3到图5所示。图3程序运行结果图4曲线图图5柱状图根据以上三图我们就可以判断出每个学生序列与参考序列(最大值)之间的关系,与最大值的关系越密切,则其关联度越大。灰色系统分析方法针对不同问题性质有几种不同做法,灰色关联度分析(GreyRelationalAnalysis)是其中的一种。基本上灰色关联度分析是依据各因素数列曲线形状的接近程度做发展态势的分析。灰色系统理论提出了对各子系统进行灰色关联度分析的概念,意图透过一定的方法,去寻求系统中各子系统(或因素)之间的数值关系。   根据以上的启示,我进行分类的想法是:1、参考序列我可以选择已知属于*一类神经元的统计数据,我选择平均值。2、加入一个未知类的数据,与已有类中的数据一起计算他们与平均值的关联度。3、计算出来的关联度我们可以有多种处理思路,如果未知类的关联度不是排在最末,可以认为它属于这一类,或者未知类的关联度大于计算出来的关联度平均值,我们可以认为它属于这一类。   使用关联度进行分类,计算出来的关联度如何使用还是个问题,这个东西是我琢磨出来的,我还没有见到过相关的文献,估计应该可以用,期望以后的专家学者钻研了。参考文献[1]郝海燕,王斌.大学生综合素质测评的灰色关联分析法[J].承德石油高等专科学校学报,2009,11(2):57-59.2010年09月23日上午于njust10系310房间CopyRight:版权所有若需转载或使用请联系作者Email:dingqian12345126.
/
本文档为【灰色关联度matlab源程序(完整版)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索