灰色关联度矩阵模型及其MATLAB实现[通俗易懂]

灰色关联度矩阵模型及其MATLAB实现[通俗易懂]灰色关联度矩阵是灰色系统另一个非常重要的领域,通常用于分析向量与向量之间或矩阵与矩阵之间的关联度,其实用性非常强。

大家好,又见面了,我是你们的朋友全栈君。

灰色关联度模型

引入

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

基本原理

(1)基本定义
假设有一组参考数列:
x j = ( x j ( 1 ) , x j ( 2 ) , x j ( 3 ) , . . . , x j ( n ) ) . j = 1 , 2 , 3 , . . . , s x_{j}=(x_{j}(1),x_{j}(2),x_{j}(3),…,x_{j}(n)). j=1,2,3,…,s xj=(xj(1),xj(2),xj(3),...,xj(n)).j=1,2,3,...,s

比较数列:
x i = ( x i ( 1 ) , x i ( 2 ) , x i ( 3 ) , . . . , x i ( n ) ) . i = 1 , 2 , 3 , . . . , t x_{i}=(x_{i}(1),x_{i}(2),x_{i}(3),…,x_{i}(n)). i=1,2,3,…,t xi=(xi(1),xi(2),xi(3),...,xi(n)).i=1,2,3,...,t

由以上两个数列,定义关联度矩阵如下:
灰色关联度就在
(2)模型说明
①变量 ζ j i ( k ) ζ_{ji}(k) ζji(k)表示的是第 i i i个比较数列与第 j j j个参考数列第 k k k个样本之间的关联系数。
m i n m i n ∣ x j ( k ) − x i ( k ) ∣ min min|x_{j}(k)-x_{i}(k)| minminxj(k)xi(k) m a x m a x ∣ x j ( k ) − x i ( k ) ∣ max max|x_{j}(k)-x_{i}(k)| maxmaxxj(k)xi(k)表示的是参考数列矩阵与比较数列矩阵数值作差之后的最小值和最大值。把 m i n m i n ∣ x j ( k ) − x i ( k ) ∣ min min|x_{j}(k)-x_{i}(k)| minminxj(k)xi(k) m a x m a x ∣ x j ( k ) − x i ( k ) ∣ max max|x_{j}(k)-x_{i}(k)| maxmaxxj(k)xi(k)耦合到变量中可以保证 ζ j i ( k ) ζ_{ji}(k) ζji(k)之值位于[0,1]区间,同时上下对称的结构可以消除量纲不同和数值悬殊的问题。
∣ x j ( k ) − x i ( k ) ∣ |x_{j}(k)-x_{i}(k)| xj(k)xi(k)式被称之为“Hamming”距离,Hamming距离的倒数被称之为反倒数距离,灰色关联度的本质就是通过反倒数的大小来判定关联程度:假设有曲线 x i x_{i} xi x j x_{j} xj上面的点 ( k , x i ( k ) ) (k,x_{i}(k)) (k,xi(k)) ( k , x j ( k ) ) (k,x_{j}(k)) (k,xj(k)),这两个点的Hamming距离越大,表示两条曲线距离越大,倒数也就越小。反过来,倒数越大,表示两个曲线之间的距离越小,因为曲线已经消除了量级之间的差异,则Hamming距离越小的曲线形态就越相似。因此,灰色关联度的本质其实是依据曲线态势相近程度来分辨数列的相关度。
④分辨率 ρ ρ ρ取值在[0,1]之间

(3)定义数列相关度
z ( 1 ) ( k ) = x ( 1 ) ( k ) + x ( 1 ) ( k − 1 ) 2 , k = 2 , 3 , 4 z^{(1)}(k)=\frac{x^{(1)}(k)+x^{(1)}(k-1)}{2},k=2,3,4 z(1)(k)=2x(1)(k)+x(1)(k1)k=2,3,4

则称新数列 z ( 1 ) = ( z ( 1 ) ( 2 ) , z ( 1 ) ( 3 ) , . . . , z ( 1 ) ( n ) ) z^{(1)}=(z^{(1)}(2),z^{(1)}(3),…,z^{(1)}(n)) z(1)=(z(1)(2),z(1)(3),...,z(1)(n)) x ( 1 ) x^{(1)} x(1)的紧邻均值数列。
(4)定义GM(1,1)的灰微分方程
由于 ζ j i ( k ) ζ_{ji}(k) ζji(k)只能反映出点与点之间的相关性,相关性信息分散,不方便刻画数列之间的相关性,需要把它整合起来,所以我们在此,定义相关度:
相关度
如果把 x i x_{i} xi x j x_{j} xj之间的相关度写成矩阵形式,则有
关联度的矩阵形式
根据这个矩阵我们就可以很清楚得出,待比较数列从列可以看出其作用大小,参考数列从行可以看出其受影响程度的大小,而依据矩阵数值大小可以分析出比较数列矩阵中那些数列起到主要作用。比如某一列数值明显大于其他列,这样的数列叫做优势子因素,反之为劣势子因素;如果某一行数值明显大于其他行则称之为优势母因素,优势母因素比较敏感,容易受到子因素的驱动影响。

MATLAB源码

%灰色关联度矩阵模型
clc;
close;
clear all;
% 控制输出结果精度
format short;
% 原始数据,其中前五项为子因素,后两项为母因素
x=[
10	10	10	12	12	12	12	12	15	15	15	15	12	12	12	15	15	15	15	20	20	20	10	10	10	7	7	15	15	15	13	13	13	13	13	13
1216.482	612.364	477.838	988.53	482.685	468.074	1263.494	1235.787	422.27	1276.28	494.07	464.21	454.431	736.462	530.722	507.105	1067.189	911.603	519.956	1703.432	1570.14	521.364	984.01	158.825	199.623	1536.96	402.327	305.36	1012.77	982.12	500	520	1100	1783.644	404.951	584.652
910	910	910	707	707	707	707	707	1196	1196	1196	1196	1262	1262	1262	1004	1004	1004	1004	870	870	870	1023	1023	1023	1398	1398	1361	1361	1361	1702	1702	1702	1702	1702	1702
804.35	804.35	804.35	877.89	877.89	877.89	877.89	877.89	785.66	785.66	785.66	785.66	788.43	788.43	788.43	818.99	818.99	818.99	818.99	841.59	841.59	841.59	874.38	874.38	874.38	823.76	823.76	784.29	784.29	784.29	764.43	764.43	764.43	764.43	764.43	764.43
990.24	990.24	990.24	948.08	948.08	948.08	948.08	948.08	747.03	747.03	747.03	747.03	809.27	809.27	809.27	909.25	909.25	909.25	909.25	869.5	869.5	869.5	925.45	925.45	925.45	774.6	774.6	782.25	782.25	782.25	703.67	703.67	703.67	703.67	703.67	703.67
20	20	20	26.5	26.5	26.5	26.5	26.5	21.8	21.8	21.8	21.8	22.5	22.5	22.5	17.98	17.98	17.98	17.98	16.7	16.7	16.7	22	22	22	19.6	19.6	30.5	30.5	30.5	22.8	22.8	22.8	22.8	22.8	22.8
23.65	23.65	23.65	28	28	28	28	28	22.45	22.45	22.45	22.45	23.45	23.45	23.45	20	20	20	20	17	17	17	22.45	22.45	22.45	20	20	31.5	31.5	31.5	23	23	23	23	23	23
];
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('各项子因素对母因素的影响作用');

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146322.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 路由器VLAN对接交换机VLAN_交换机vlan指的是什么

    路由器VLAN对接交换机VLAN_交换机vlan指的是什么**浅谈路由器,交换机,集线器,vlan作用**二层交换机:基于MAC有MAC单播无MAC洪泛路由器的作用:1.路由(为其所承载的数据路由)—选路2.不同步广播域隔离广播域3.不同网络类型通讯交换机的作用:1.取代集线器2.也提供接口连接更多的用户3.基于MAC地址单播通讯4.理论上无限延长传输距离5.对二进制进行存储存储数据集线器(一层设备物理层…

    2022年8月10日
    27
  • 基于JavaSpringMvc+mybatis实现学生信息管理系统「建议收藏」

    基于JavaSpringMvc+mybatis实现学生信息管理系统「建议收藏」Java经典基础毕设项目–学生信息管理系统详细设计【附源码】主要模块设计如下:使用Shiro权限管理框架,实现登录验证和登录信息的储存,根据不同的登录账户,分发权限角色,对不同页面url进行角色设置。管理员可对教师信息、学生信息、课程信息进行增删改查操作,管理员账户,可以重置非管理员账户的密码。

    2022年10月17日
    2
  • 初识业务架构图_管理架构图

    初识业务架构图_管理架构图文章目录什么是业务架构图?业务架构图规范宏观微观设计步骤分层分模块分功能实例什么是业务架构图?是将用户需求进行宏观系统抽象进行描述和展示,是表达业务层级和关系的工具,目的是将简单的业务逻辑简单化,降低理解难度,这个图是给用户和各级领导看的。业务架构图规范宏观1.宏观:横向:并列结构,级别是相同的;纵向:要有分层的思想,整体上有层次感,上层是依赖于下层的,越底层的,越是基础服务,同时也更为重要;对称:要讲究对称美,尽可能地功能结构分配均匀;虚线框:多个模块,逻辑上可以归为一块时可以使用虚线

    2022年10月11日
    2
  • jQuery添加元素的方法

    jQuery添加元素的方法before() 在被选元素之前插入内容 after() 在被选元素之后插入内容 prepend() 在被选元素的开头插入内容 append() 在被选元素的结尾插入内容

    2022年6月22日
    26
  • OPENGL 教程网站

    1.http://nehe.gamedev.net/这个是我觉得全世界最知名的OpenGL教程,而且有网友将其中48个教程翻译成了中文http://www.owlei.com/DancingWind/。Nehe教程最大的特点是提供了针对不同平台、不同编译器、不同语言的各种版本。你

    2022年4月8日
    54
  • [Motion]MPU9250的详细功能

    简述接下来的内容将对MPU9250的基本的功能进行详细的介绍,主要会分模块进行阐述。时钟MPU9250有两个内部时钟源,以及一个PLL。内部时钟源:时钟源说明内部振荡器功耗低,但时钟精度略差X,Y或Z方向的GyroMEMS时钟,功耗较高,但时钟精确(只要Gyro一经启用,就会使用该时钟源)时钟的选择需要综合平衡时钟精度和功耗两个因素,所以从MPU9250的性

    2022年4月8日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号