灰色关联度矩阵模型及Matlab实现

灰色关联度模型

引入

灰色关联度矩阵是灰色系统另一个非常重要的领域,通常用于分析向量与向量之间或矩阵与矩阵之间的关联度,其实用性非常强。

基本原理

(1)基本定义

假设有一组参考数列:

xj=(xj(1),xj(2),xj(3),…,xj(n)).j=1,2,3,…,s

比较数列:

xi=(xi(1),xi(2),xi(3),…,xi(n)).i=1,2,3,…,t

由以上两个数列,定义关联度矩阵如下:

(2)模型说明

除量纲不同和数值悬殊的问题。

③ ∣ x j ( k ) x i ( k ) ∣ |x_{j}(k)-x_{i}(k)| ∣x j

(k)x i

(k)∣式被称之为“Hamming”距离,Hamming距离的倒数被称之为反倒数距离,灰色关联度的本质就是通过反倒数的大小来判定关联程度:假设有曲线 x i x_{i} x i

和 x j x_{j} x j

上面的点 ( k , x i ( k ) ) (k,x_{i}(k)) (k,x i

(k))和 ( k , x j ( k ) ) (k,x_{j}(k)) (k,x j(k)),这两个点的Hamming距离越大,表示两条曲线距离越大,倒数也就越小。反过来,倒数越大,表示两个曲线之间的距离越小,因为曲线已经消除了量级之间的差异,则Hamming距离越小的曲线形态就越相似。因此,灰色关联度的本质其实是依据曲线态势相近程度来分辨数列的相关度。

④分辨率 ρ 取值在[0,1]之间

(3)定义数列相关度

如果把 x i 和xj之间的相关度写成矩阵形式,则有

根据这个矩阵我们就可以很清楚得出,待比较数列从列可以看出其作用大小,参考数列从行可以看出其受影响程度的大小,而依据矩阵数值大小可以分析出比较数列矩阵中那些数列起到主要作用。比如某一列数值明显大于其他列,这样的数列叫做优势子因素,反之为劣势子因素;如果某一行数值明显大于其他行则称之为优势母因素,优势母因素比较敏感,容易受到子因素的驱动影响。

%灰色关联度矩阵模型

MATLAB源码

%灰色关联度矩阵模型

clc;

close;

clear all;

% 控制输出结果精度

format short;

% 原始数据,其中前五项为子因素,后两项为母因素

x=[

1010101212121212151515151212121515151520202010101077151515131313131313

1216.482612.364477.838988.53482.685468.0741263.4941235.787422.271276.28494.07464.21454.431736.462530.722507.1051067.189911.603519.9561703.4321570.14521.364984.01158.825199.6231536.96402.327305.361012.77982.1250052011001783.644404.951584.652

9109109107077077077077071196119611961196126212621262100410041004100487087087010231023102313981398136113611361170217021702170217021702

804.35804.35804.35877.89877.89877.89877.89877.89785.66785.66785.66785.66788.43788.43788.43818.99818.99818.99818.99841.59841.59841.59874.38874.38874.38823.76823.76784.29784.29784.29764.43764.43764.43764.43764.43764.43

990.24990.24990.24948.08948.08948.08948.08948.08747.03747.03747.03747.03809.27809.27809.27909.25909.25909.25909.25869.5869.5869.5925.45925.45925.45774.6774.6782.25782.25782.25703.67703.67703.67703.67703.67703.67

20202026.526.526.526.526.521.821.821.821.822.522.522.517.9817.9817.9817.9816.716.716.722222219.619.630.530.530.522.822.822.822.822.822.8

23.6523.6523.65282828282822.4522.4522.4522.4523.4523.4523.452020202017171722.4522.4522.45202031.531.531.5232323232323

];

n1=size(x,1);

% 数据标准化处理

for i = 1:n1

x(i,:) = x(i,:)/x(i,1);

end

% 保存中间变量,亦可省略此步,将原始数据赋予变量data

data=x;

%% 分离数据

% 分离参考数列(母因素)

consult=data(6:n1,:);

m1=size(consult,1);

% 分离比较数列(子因素)

compare=data(1:5,:);

m2=size(compare,1);

for i=1:m1

for j=1:m2

t(j,:)=compare(j,:)-consult(i,:);

end

min_min=min(min(abs(t’)));

max_max=max(max(abs(t’)));

% 通常分辨率都是取0.5

resolution=0.5;

% 计算关联系数

coefficient=(min_min+resolution*max_max)./(abs(t)+resolution*max_max);

% 计算关联度

corr_degree=sum(coefficient’)/size(coefficient,2);

r(i,:)=corr_degree;

end

% 输出关联度值并绘制柱形图

r

bar(r,0.90);

axis tight;

legend(‘第一行’,’第二行’,’第三行’,’第四行’,’第五行’);% 图例

grid on;% 加入网格

% 去掉X轴上默认的标签

set(gca,’XTickLabel’,”);

% 设定X轴刻度的位置,这里有2个母因素

n=2;

% 这里注意:x_range范围如果是[1 n]会导致部门柱形条不能显示出来,所以范围要缩一点

x_value = 1:1:n;

x_range = [0.6 n+.4];

% 获取当前图形的句柄

set(gca,’XTick’,x_value,’XLim’,x_range);

% 在X轴上标记2个母因素

profits={‘第六行’,’第七行’};

y_range = ylim;

% 用文本标注母因素名称

handle_date = text(x_value,y_range(1)*ones(1,n)+.018,profits(1:1:n));

% y轴标记

ylabel(‘影响程度’);

title(‘各项子因素对母因素的影响作用’);

也欢迎加入2021数学建模竞赛备战群:513094786,一起迎接国赛,竞赛交流学习

模友们可能已经发现:现在公众号推送文章的顺序,已经不会按时间排列了。这种变化,可能会让各位模友错过我们每天的推送。

所以,如果你还想像往常一样,聚焦数模乐园,就需要将“数模乐园”,同时在阅读完文章后,别忘了给一个“”哦。

相关文章

发表于: 2021-06-05 06:33:10 AM
更多新闻请到脸书追踪我们:我的分享平台

Be the first to comment

Leave a Reply

Your email address will not be published.


*