关于灰色关联度的程序与算例 doc

发布时间:2020-05-18 01:37:50   来源:文档文库   
字号:

最近在写论文,当利用到灰色关联度的时候发现网上其实很多,但是新手们往往猴急,急于求成,所以估计也没心思静下心看程序。我自己收集了一个M文件,但测试的时候发现不是我想要的那样子,因此在利用Excel手动验算一遍后,发现改动后的程序与Excel计算的一样,因此想将一点体会写出来,以供后来的师弟师妹们参考。不过,我得首先感谢那些在论坛里之前出现的零碎的代码供给着,他们的思路也许是对后来者的一种有价值的学习机会。

例子:比如,计算北部湾与南宁、北海、防城港、钦州、玉林、崇左的关联度大小。

北部湾(X0)

南宁(X1

北海(X2)

防城港(X3)

钦州(X4)

玉林(X5)

崇左(X6)

-0.005316573

-0.095660602

-0.117373426

-0.216541827

0.114274306

0.000266489

0.152442776

-0.132721847

-0.112403851

-0.044912311

-0.373407116

-0.099268495

-0.099241476

-0.308007719

0.309945253

0.322376594

0.276800042

0.175130220

0.272985678

0.394530585

0.170312111

0.015603071

0.004051463

0.097981736

0.073507412

0.018975750

0.002789946

0.001619969

0.131392824

0.030772873

0.253454072

0.391240177

0.205628864

0.154068167

0.060851382

-0.007093816

-0.015427489

-0.019699032

0.008563178

-0.000678786

-0.003236778

-0.001156411

一般我推荐用综合关联度分析,因为它比相对关联度分析更全面。

First,利用Excel计算一遍,相关过程参考中国知网或百度文库里面关于相对关联度的计算方法,这里暂不列出。

对各序列进行始点零化像

X00

X10

X20

X30

X40

X50

X60

0.000000000

0.000000000

0.000000000

0.000000000

0.000000000

0.000000000

0.000000000

-0.127405273

-0.016743250

0.072461115

-0.156865289

-0.213542801

-0.099507965

-0.460450495

0.315261827

0.418037195

0.394173467

0.391672047

0.158711372

0.394264096

0.017869335

0.020919644

0.099712065

0.215355162

0.290049238

-0.095298555

0.002523457

-0.150822807

0.136709397

0.126433475

0.370827497

0.607782004

0.091354558

0.153801678

-0.091591394

-0.001777243

0.080233112

0.097674394

0.225105004

-0.114953091

-0.003503267

-0.153599187

S0

S1

S2

S3

S4

S5

S6

0.344596974

0.667556041

1.101654438

1.245190502

-0.116251972

0.449329633

-0.761794955

S0'

S1'

S2'

S3'

S4'

S5'

S6'

-64.81561539

-6.978380132

-9.385893193

-5.750346351

-1.017306304

1686.110834

-4.997251916

|S0'|

|S1'|

|S2'|

|S3'|

|S4'|

|S5'|

|S6'|

64.81561539

6.978380132

9.385893193

5.750346351

1.017306304

1686.110834

4.997251916

|S0'-Si'|

i=1

i=2

i=3

i=4

i=5

i=6

57.83723525

55.42972219

59.06526903

63.79830908

1750.92645

59.81836347

相对关联度r0i

0.557248026

0.575677869

0.547847259

0.511615188

0.500142741

0.542082218

绿色部分是北部湾与其他城市之间的关联度大小(即上述原始数列矩阵),其中0代表北部湾,字母i依次代表南宁、北海、防城港、钦州、玉林、崇左城市名称。



Matlab计算也是一样的结果,只是上述Excel算的其实计算量也不是很大,但如果出现巨大数量的矩阵的时候,估计你只好想到编程求解了,以下提供综合关联度的计算程序。将以下文本拷贝成M文件,即可在软件中调用,

function com_xy = greyrelation(x,y) %调用的时候不用function英文前缀!!!我几次都弄错了,看来是Matlab基础薄弱啊~~~

y_row = size(y,1);%;%计算矩阵y的行数

y_col =size(y,2);%;%计算矩阵y的列数

x_col = size(x,2);%;%计算x的列数

if y_col ~= x_col

error(message('MATLAB:greyrelation:wrong in input data'));

end

temp_y = y;%绝对关联度中比较序列中的数据处理后的矩阵

temp_x = x;%x数据处理后的矩阵

for i =1:x_col

temp = x(i)-x(1);

temp_x(i)=temp;

end

for i =1:y_row

for j=1:y_col

temp = y(i,j) - y(i,1);

temp_y(i,j)=temp;

end

end%处理过程

%temp_x;

%temp_y;

s0 = abs(sum(temp_x)-0.5*temp_x(x_col));

abs_xy =[];

for i=1:y_row

si = abs(sum(temp_y(i,:))-0.5*temp_y(i,y_col));

si_s0 = abs(si-s0);

abs_xy(i,1) =(1+s0+si)/(1+s0+si+si_s0);

end%计算绝对关联度%该步骤在编程过程中存在的问题是公式理解上存在偏差,公式没理解好

%下面开始计算相关关联度

temp_y2 = y;

temp_x2 = x;

for i =1:x_col

temp = x(i)/x(1);

temp_x2(i)=temp-1;

end

for i =1:y_row

for j=1:y_col

temp = y(i,j) / y(i,1);

temp_y2(i,j)=temp-1;

end

end

s02 = abs(sum(temp_x2)-0.5*temp_x2(x_col));

rela_xy=[];

for i=1:y_row

si2 = abs(sum(temp_y2(i,:))-0.5*temp_y2(i,y_col));

si2_s02 = abs(si2-s02);

rela_xy(i,1) =(1+s02+si2)/(1+s02+si2+si2_s02);

end

%上述步骤是为了计算相关关联度,

%下面计算综合关联度

com_xy = 0.5*abs_xy +(1-0.5)*rela_xy;%返回的是综合关联度

%关于如何返回相对关联度的方法是:将函数名改为function rela_xy = greyrelation(x,y),

%然后在最后一行写上rela_xy,如此返回的才是相对关联度



以上是M程序,通过程序运行,得到的结果是(相对关联度)

rela_xy=

0.557248

0.575678

0.547847

0.511615

0.519363

0.542082

是不是和Excel算的一样呢(当然,保留4位小数即可)

com_xy= PS:这个是综合关联度,至于做论文或分析时,自己看情况选取吧。

0.709471213

0.669670892

0.644912851

0.688217664

0.732100808

0.688381484

不知道你们看懂没哦,给出的程序主要求解com_xy,但如果有同学想求解rela_xy,即相对关联度,将程序第一行改为function rela_xy = greyrelation(x,y) ,同时最后一行的com_xy = 0.5*abs_xy +(1-0.5)*rela_xy删除,替换为rela_xy即可。就是说首尾呼应。



以上是程序和例子说明,我只提供灰色关联度分析的程序和例子,自己今天总结的,仅供参考!不足之处,还请程序高手批评指正!

5/18/2020 1:44:22 AM

本文来源:https://www.2haoxitong.net/k/doc/5cd77463ef630b1c59eef8c75fbfc77da26997da.html

《关于灰色关联度的程序与算例 doc.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式