灰色关联度matlab源程序(完整版)文档格式.doc
《灰色关联度matlab源程序(完整版)文档格式.doc》由会员分享,可在线阅读,更多相关《灰色关联度matlab源程序(完整版)文档格式.doc(25页珍藏版)》请在冰点文库上搜索。
[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
fori=2:
Dij(i-1,j)=abs(data_gyh(1,j)-data_gyh(i,j));
Dijmax=max(max(Dij));
Dijmin=min(min(Dij));
m
Lij(i,j)=(Dijmin+p*Dijmax)/(Dij(i,j)+p*Dijmax);
LijRowSum=sum(Lij'
Rij(i)=LijRowSum(i)/n;
R=[R;
Rij];
end
R
matlab求灰色关联度矩阵源代码
2010-12-1122:
57
functiongreyrelationaldegree(X,c)
%GRAYRELATIONALDEGREEthisfunctionisusedforcalculatingthegery
%relationbetweensquence
%rememeberthatthefirstcolumnoftheinputmatrixisthedesicion
%attributionsquences.whatwewanttocalculateisthegreyralationaldegreebetween
%itandotherattributions
%Xisthesquencematrix,cistheparameterusedinthefunction
%inmostofthetime,thevalueofcis0.5
firstrow=X(1,:
reci_firstrow=1./firstrow;
reci_convert=diag(reci_firstrow);
initialMIRROR=X*reci_convert;
%findtheinitialvaluemirrorofthesequcematrix
A=initialMIRROR'
[nrow,ncolumn]=size(A);
for(i=2:
nrow)
C=A(i,:
)-A(1,:
)
D=abs(C);
eval(['
B'
num2str(i)'
=D'
]);
amax=max(eval(['
num2str(i)]))
amin=min(eval(['
maxarray(i-1)=amax
minarray(i-1)=amin
end%findthedifferencesquenceandthemaxvalueandminvalueofeachsquence
maxmax=max(maxarray)
minmin=min(minarray)
for(i=2:
for(j=1:
ncolumn)
greyrelationdegree'
(j)=(minmin+c*maxmax)/(B'
(j)+c*maxmax)'
])
end%calculatethegreyralationaldegreeofeachdata
greyrelatioanaldegree_value'
=mean(greyrelationdegree'
)'
])
基于matlab灰色关联度计算的实现
2006年07月28日星期五上午11:
06
functionr=incident_degree(x0,x1)
%computetheincidentdegreeforgreymodel.
%DesignedbyNIXIUHUI,DalianFisherUniversity.
%17August,2004,LastmodifiedbyNXHat21August,2004
%数据初值化处理
x0_initial=x0./x0
(1);
temp=size(x1);
b=repmat(x1(:
1),[1temp
(2)]);
x1_initial=x1./b;
%分辨系数选择
K=0.1;
disp('
Thegreyinterconnectdegreeis:
'
x0_ext=repmat(x0_initial,[temp
(1)1]);
contrast_mat=abs(x0_ext-x1_initial);
delta_min=min(min(contrast_mat));
%delta_min在数据初值化后实际为零
delta_max=max(max(contrast_mat));
a=delta_min+K*delta_max;
incidence_coefficient=a./(contrast_mat+K*delta_max);
%得到关联系数
r=(sum(incidence_coefficient'
))'
/temp
(2);
%得到邓氏面积关联度
我们根据图1的步骤和图2的数据进行编程实现,程序如下:
%清除内存空间等
closeall;
%载入源数据
%其实这里可以载入execl表格的
n=15;
%参与评价的人数
m=4;
%参与评价的指标个数
X_0=zeros(n,m);
%
数据矩阵
X_2=zeros(n,m);
%偏差结果的求取矩阵
X_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];
%指标数
X_1=[a1_0'
a2_0'
a3_0'
a4_0'
%最后使用到的数据矩阵
%1寻找参考列
x0=[max(a1_0),max(a2_0),max(a3_0),max(a4_0)];
%取每列的最大值(指标的最大值)
%2计算偏差结果
i=1;
while(i~=m+1)
%为什么这个地方会出问题呢
1:
X_2(j,i)=abs(X_1(j,i)-x0(i));
end;
i=i+1;
%3确定偏差的最值
error_min=min(min(X_2));
error_max=max(max(X_2));
%4计算相关系数
while(i~=m+1)
X_3(j,i)=(error_min+p*error_max)/(X_2(j,i)+p*error_max);
%X_3
%可以在此观察关联矩阵
%5计算各个学生的关连序
a=zeros(1,n);
forj=1:
a(j)=a(j)+X_3(j,i);
%%%%其实可以直接用sum
a(j)=a(j)/m;
%%%%%%%%%可以改进%%%%%%%%%%
123下一页
%
%a
%在此可以观测各个学生的序
%改进:
如果各个指标的所占权重不一样的话,可以添加相应的权系数
%6排序
b=a'
;
[c,s]=sort(b);
fori=1:
d(i)=i;
d=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.
上一页123
请教一下用MATLAB实现灰色关联分析的程序
初始矩阵为x=[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]
我写的程序如下:
x1=[1.141.491.692.122.434.325.926.077.85;
4.875.896.767.978.8410.0511.3112.2511.64]%原始数据5行9列
x1=x
5
forj=1:
9
x(i,j)=x(i,j)/x1(1,j)
x(i,j)=abs(x(i,j)-x1(i,1))
max=x(1,1)
min=x(1,1)
ifx(i,j)>
=max
max=x(i,j)
end
ifx(i,j)<
=min
min=x(i,j)
k=0.5%分辨系数取值
l=(min+k*max)./(x+k*max)%求关联系数矩阵
但是运算错误!
!
请教一下高手
问题补充:
楼下回答的不对,那样虽不会运行错误,但得不到正确的答案
怎么没人再给我回答啊555555555
其他回答共1条
4.00;
4.875.896.767.978.8410.0511.3112.2511.64]%原始数据5行9列
x1=x%有错,应该为x=x1
5
灰色关联matlab程序
浏览次数:
170次悬赏分:
5|提问时间:
2011-5-2519:
40|提问者:
zjon111
1240915296187432239926451
216314265810314045340903397983
1.54.85.9-0.73.3
11841204111311021168
1175913786157811717519109
3876051322613306851883080
109998137324172828224599278140
7914593572114830132678156998
161587172534217885260772303302
%分辨系数
yy=fangzhen(irow,:
data=[yy;
data_gyh1=mean(yangben)
fori=1:
forj=1:
data_gyh(i,j)=data(i,j)/data_gyh1(j);
end
end
fori=2:
Dij(i-1,j)=abs(data_gyh(1,j)-data_gyh(i,j));
Dijmax=max(max(Dij));
Dijmin=min(min(Dij));
Lij(i,j)=(Dijmin+p*Dijmax)/(Dij(i,j)+p*Dijmax);
LijRowSum=sum(Lij'
Rij(i)=LijRowSum(i)/n;
R=[R;
哪里出错了,求高手解答,顺便求结果分析
推荐答案
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。
个人意见,仅供参考。
参考资料:
基于matlab的灰度关联分析法
(2010-09-2310:
12:
42)
标签:
matlab
灰度关联
分类
分类:
matlab相关
做了四天的研究生数学建模,感觉做的很一般,应该是没有很好的深入理解题意,而且对于神经元的背景信息不是很清楚,导致了后面的东西没有时间处理,最后一天的熬夜,终于把论文给赶了出来,第二天从早上十点一觉睡到晚上六点半。
关于建模神经元这题主要是分类和聚类问题,前者是类别已知,然后判断测试样本是否为某一类。
后者是无监督学习,即么有类别信息和其他先验知识,一般要求满足最大组内相似性和最小组间相似性。
我想到了上学期给同学做的一个使用灰度关联分析法进行大学生综合素质评价的东西,下面主要讲一下那个东西是怎么实现的。
多指标综合测评主要有三大类方法:
常规数学方法、模糊数学方法、多元统计分析方法。
灰色关联分析是灰色系统理论中的一个分支,其对数据的要求不是很严格,不要求数据分布具有特殊规律。
下面我按照参考文献1中的内容把综合素质评价的程序给实现。
下面是灰度关联法进行综合评价的步骤:
图1灰度关联分析法进行综合测评的步骤
图2所使用的综合评价表
我们根据图1的步骤和图2的数据进行编程实现,程序如下:
a4_0=[1010.735.45.4