灰色关联度矩阵模型及其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('各项子因素对母因素的影响作用');

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux抓本来端口包,Linux抓包

    linux抓本来端口包,Linux抓包tcpdump-ieth1-nn‘dsthost172.31.0.42‘-w/tmp/temp.cap监听指定的主机$tcpdump-ieth0-nn‘host192.168.1.231‘这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。$tcpdump-ieth0-nn‘srchost192.168.1.231‘这样只有192….

    2022年10月15日
  • 浏览器怎么打开微信客户端连接服务器,微信“请在微信客户端打开链接”怎么办?-在浏览器中打开微信链接的方法 – 河东软件园…「建议收藏」

    浏览器怎么打开微信客户端连接服务器,微信“请在微信客户端打开链接”怎么办?-在浏览器中打开微信链接的方法 – 河东软件园…「建议收藏」自从出现了电脑版的微信之后,很多用户都会在电脑中下载安装一个客户端,可就是电脑客户端中打开链接也会出错!微信中有的时候朋友或是公众号会发送一些链接,若是使用电脑单击打开就会被提示“请在微信客户端打开链接”,可是自己使用的就是电脑客户端,并且更换浏览器也不能解决这个现象,这是怎么一回事呢?因为在微信中是自动设置了使用默认浏览器打开的,无法识别的时候自然就不能打开了,我们可以在微信中直接将这个功能关闭…

  • android开机动画 制作工具,android开机动画制作

    android开机动画 制作工具,android开机动画制作本帖最后由nihao200823于2017-1-1220:38编辑android开机动画制作与播放原理简介谁都想拥有一个华丽漂亮的开机动画,这让人心情舒畅,android是怎么来实现的?怎么制作一个自己的开机动画?这里揭开android开机动画的神秘面纱。1、制作开关机动画1.1开机动画的位置system/media/bootanimation.zip,要修改开机动画就是修改boota…

  • 如何查看windows的CUDA版本「建议收藏」

    如何查看windows的CUDA版本「建议收藏」最近开始学习一些关于图像处理的计算机视觉的问题(跟着老师,开拓视野)首先就是安装anaconda环境(这个简单)然后老师要求使用pytorch作为我们学习的工具,于是上官网查看相应的pytorch的版本:只需要我们自己选择相应的系统,下载使用的工具方式,python的版本,以及CUDA版本号,就可以获得到相应的命令进行下载安装。这时遇到一个问题,CUDA是什么?CUDA(C…

  • ztree中文api_ztree vue

    ztree中文api_ztree vue链接:http://www.treejs.cn/v3/main.php#_zTreeInfo

    2022年10月30日
  • USB转RS485代替PC/PPI通讯电缆

    USB转RS485代替PC/PPI通讯电缆S7-200的CPU使用的是RS485,PC机有RS232口和USB口,两种接口电气规范不同,需要用中间电路转换成同一接口类型。现在常用的PC/PPI其实就是一根USB/RS485的匹配电缆。

发表回复

您的电子邮箱地址不会被公开。

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