(完整版)五种灰色关联度分析matlab代码
- 格式:doc
- 大小:14.49 KB
- 文档页数:3
灰色关联度分析法为了适应瞬息万变的市场需求, 企业不断调整自己的核心能力, 在产品的开发设计中更重视供应商的作用。
作为供应链合作关系运行的基础, 供应商的评价选择是一个至关重要的问题, 供应商的业绩对企业的影响越来越大,影响着企业的生存与发展。
因此, 进行科学全面的供应商评价就显得十分必要。
(1)确定比较对象产品质量、技术水平、供应能力、经济效益、市场影响度指标属于效益型指标;产品价格、地理位置、售后服务指标属于成本型指标。
i 指五个待选供应商编号,,5,,1 =i j 指八个指标8,,1j =,ij a 是第i 个供应商第j 个指标变量为了使每个属性变换后的最优值为1 且最差值为0,对数据进行标准0-1变换利润型指标标准化公式)/()(min maxmin j j j ij ij a a a a b --=成本型指标标准化公式)/()(min max max j j ij j ij a a a a b --=数据结果见下表。
(2)计算灰色关联系数)()(max max )()()()(max max )()(min min )(0000t x t x k x k x t x t x t x t x k s tsi s ts s ts -+--+-=ρρξ为比较数列对参考数列在第个指标上的关联系数,其中为]1,0[∈ρ分辨系数。
称式中)()(min min 0t x t x s ts-、)()(max max 0t x t x s ts-分别为两级最小差及两级最大差。
一般来讲,分辨系数ρ越大,分辨率越大;ρ越小,分辨率越小。
在这里ρ取0.5。
(3)计算灰色加权关联度 灰色加权关联度的计算公式为∑==nk i i k w r 1)(ξ这里i r 为第i 个评价对象对理想对象的灰色加权关联度。
关联系数和关联度值(4)评价分析根据灰色加权关联度的大小,对各评价对象进行排序,可建立评价对象的关联序,关联度越大其评价结果越好。
(完整版)五种灰色关联度分析matlab代码灰色邓氏关联度分析% P12 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_deng(x)s = size(x);len = s(2);num = s(1);ro = 0.5;for i = 1: numx(i,:) = x(i,:)./x(i,1);enddx(num,len) = 0;for i = 2 : numfor k = 1 : lendx(i,k) = abs(x(1,k) - x(i,k));endendmax_dx = max(max(dx));min_dx = min(min(dx));r(1,1:len-1) = 1;for i = 2 : numfor k = 1 : lenr(i,k) = (min_dx + ro*max_dx)/(dx(i,k) + ro*max_dx);endendr1 = sum(r(2:num,:),2)/(len);改进灰色绝对关联度分析% P11 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_gjjd(x)s = size(x);len = s(2);num = s(1);for i = 1: numx(i,:) = x(i,:)./x(i,1);enddx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendc = 1;beta(1,1:len-1) = 0;w(1,1:len-1) = 0;for i = 2 : numtemp = sum(abs(x(i,:) - x(1,:)),2);for k = 1 : len - 1beta(i,k) = atan((dx(i,k) - dx(1,k))/(1 + dx(i,k)*dx(1,k)));if beta(i,k) < 0beta(i,k) = pi + beta(i,k);endw(i,k) = 1 - abs(x(i,k) - x(1,k))/temp;endendr = c./(c + tan(beta./2));wr = w.*r;r1 = sum(wr(2:num,:),2)/(len - 1);灰色绝对关联度分析% P18 -- The Study on the Grey Relational Degree and ItsApplication function r1 = gld_jd(x)s = size(x);len = s(2);num = s(1);for i = 1: numx(i,:) = x(i,:)./x(i,1);enddx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendr(1,1:len-1) = 1;for i = 2 : numfor k = 1 : len - 1r(i,k) = 1/(1 + abs(dx(1,k) - dx(i,k)));endendr1 = sum(r(2:num,:),2)/(len - 1);灰色T型关联度分析% P19 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_t(x)s = size(x);len = s(2);num = s(1);dx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = abs(x(i,j+1) - x(i,j));d_x = sum(dx(i,:),2)/(len - 1);x(i,:) = x(i,:)./d_x;enddx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendr(1,1:len-1) = 1;for i = 2 : numfor k = 1 : len - 1if dx(1,k)*dx(i,k) == 0r(i,k) = sign(dx(1,k)*dx(i,k));elser(i,k) = sign(dx(1,k)*dx(i,k))*min(abs(dx(1,k)),abs(dx(i,k))) / max(abs(dx(1,k)),abs(dx(i,k)));endendendr1 = sum(r(2:num,:),2)/(len - 1);灰色斜率关联度分析% P20 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_xl(x)s = size(x);len = s(2);num = s(1);for i = 1: numx(i,:) = x(i,:)./x(i,1);dx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendr(1,1:len-1) = 1;for i = 2 : numfor k = 1 : len - 1r(i,k) = 1/(1 + abs(dx(1,k)/x(1,k+1) - dx(i,k)/x(i,k+1))); endendr1 = sum(r(2:num,:),2)/(len - 1);。
matlab 灰度算法-回复Matlab灰度算法在Matlab中,灰度算法是图像处理中应用最广泛的一种算法之一。
灰度图像通常被用于减少图像的复杂性,保留图像中的重要信息,同时提高图像处理的速度和效率。
本文将介绍Matlab中常用的灰度算法,以及如何逐步实现这些算法。
一、图像的灰度化图像的灰度化是将彩色图像转换为灰度图像的过程。
Matlab中提供了多种灰度化方法,比较常用的是平均值法和加权平均值法。
1. 平均值法平均值法是将RGB三个分量的平均值作为灰度值,公式如下:灰度值= (R + G + B) / 3在Matlab中,可以使用rgb2gray函数将彩色图像转换为灰度图像。
2. 加权平均值法加权平均值法是根据颜色对灰度的贡献程度不同,对RGB分量进行加权求和得到灰度值。
一般情况下,红色对灰度的贡献最高,绿色次之,蓝色最低。
公式如下:灰度值= 0.299 * R + 0.587 * G + 0.114 * B同样地,在Matlab中可以使用rgb2gray函数实现加权平均值法。
二、图像的灰度直方图灰度直方图是衡量图像亮度分布的工具。
它将图像中所有像素的灰度值分布在不同的亮度级别上,并统计每个亮度级别的像素数量。
在Matlab中,可以使用imhist函数计算图像的灰度直方图。
1. 计算灰度直方图matlabim = imread('image.jpg'); 读取图像gray_image = rgb2gray(im); 灰度化imhist(gray_image); 计算灰度直方图这段代码首先读取名为image.jpg的图像,然后将其转换为灰度图像gray_image,最后使用imhist函数计算灰度直方图。
2. 绘制灰度直方图matlabim = imread('image.jpg'); 读取图像gray_image = rgb2gray(im); 灰度化hist_array = imhist(gray_image); 计算灰度直方图bar(hist_array); 绘制直方图xlabel('灰度级别'); x轴标签ylabel('像素数量'); y轴标签title('灰度直方图'); 标题这段代码在计算灰度直方图的基础上,使用bar函数绘制直方图,然后通过xlabel、ylabel和title函数设置相应的标签和标题。
matlab 灰度算法-回复【MATLAB灰度算法】灰度算法是一种将彩色图像转化为黑白图像的方法,在计算机视觉和图像处理领域被广泛使用。
MATLAB是一种强大的数学计算工具,它提供了丰富的图像处理函数和工具箱,可用于实现灰度算法。
本文将逐步回答如何使用MATLAB实现灰度算法,并介绍一些常用的灰度算法技术。
# 第一步:图像读取与显示在MATLAB中,可以使用`imread`函数读取图像,使用`imshow`函数显示图像。
我们首先需要读取一张彩色图像,并将其显示出来。
matlab读取彩色图像rgbImage = imread('image.jpg');显示彩色图像imshow(rgbImage);title('Original Image');# 第二步:转化为灰度图像灰度图像是一种每个像素只有一个灰度值(亮度值)的图像。
在MATLAB中,可以使用`rgb2gray`函数将彩色图像转化为灰度图像。
matlab将彩色图像转化为灰度图像grayImage = rgb2gray(rgbImage);显示灰度图像imshow(grayImage);title('Grayscale Image');# 第三步:灰度化算法选择灰度化算法决定了如何将彩色图像中的RGB信息转化为灰度图像中的灰度值。
常用的灰度化算法有平均值法、加权平均法和分量最大法等。
下面分别介绍这些算法并给出MATLAB代码实现。
平均值法平均值法是最简单的灰度化算法之一,它将彩色图像的RGB分量的平均值作为灰度值。
具体实现如下:matlab平均值法灰度化averageGrayImage = (rgbImage(:, :, 1) + rgbImage(:, :, 2) + rgbImage(:, :, 3)) / 3;显示平均值法灰度图像imshow(averageGrayImage);title('Average Grayscale Image');加权平均法加权平均法是一种考虑了RGB分量的亮度影响的灰度化算法。
灰⾊模型预测GM(1,1)MATLAB程序代码版权所有引⽤请注明出处function gmcal=gm1(x)%% ⼆次拟合预测GM(1,1)模型%x = [5999,5903,5848,5700,7884];sizexd2 = size(x,2);%求数组长度k=0;for y1=xk=k+1;if k>1x1(k)=x1(k-1)+x(k);%累加⽣成z1(k-1)=-0.5*(x1(k)+x1(k-1));%z1维数减1,⽤于计算Byn1(k-1)=x(k);elsex1(k)=x(k);endend%x1,z1,k,yn1sizez1=size(z1,2);%size(yn1);z2 = z1';z3 = ones(1,sizez1)';YN = yn1'; %转置B=[z2 z3];au0=inv(B'*B)*B'*YN;au = au0';afor = au(1);ufor = au(2);ua = au(2)./au(1);constant1 = x(1)-ua;afor1 = -afor;x1t1 = 'x1(t+1)';estr = 'exp';tstr = 't';leftbra = '(';rightbra = ')';strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra) %输出时间响应⽅程k2 = 0;for y2 = x1k2 = k2 + 1;if k2 > kelseze1(k2) = exp(-(k2-1)*afor);endendsizeze1 = size(ze1,2);z4 = ones(1,sizeze1)';G=[ze1' z4];X1 = x1';au20=inv(G'*G)*G'*X1;au2 = au20';Aval = au2(1);Bval = au2(2);strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(Bval),rightbra) %输出时间响应⽅程nfinal = sizexd2-1 + 1; %决定预测的步骤数5 这个步骤可以通过函数传⼊%nfinal = sizexd2 - 1 + 1;%预测的步骤数 1for k3=1:nfinalx3fcast(k3) = constant1*exp(afor1*k3)+ua;end%⼀次拟合累加值for k31=nfinal:-1:0if k31>1x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);elseif k31>0x31fcast(k31+1) = x3fcast(k31)-x(1);elsex31fcast(k31+1) = x(1);endendendx31fcast%⼀次拟合预测值for k4=1:nfinalx4fcast(k4) = Aval*exp(afor1*k4)+Bval;end%x4fcastfor k41=nfinal:-1:0if k41>1x41fcast(k41+1) = x4fcast(k41)-x4fcast(k41-1);elseif k41>0x41fcast(k41+1) = x4fcast(k41)-x(1);elsex41fcast(k41+1) = x(1);endendendx41fcast,x%⼆次拟合预测值%***精度检验p C************//////////////////////////////////k5 = 0;for y5 = xk5 = k5 + 1;if k5 > sizexd2elseerr1(k5) = x(k5) - x41fcast(k5);endend%err1%绝对误差xavg = mean(x);%xavg%x平均值err1avg = mean(err1);%err1avg%err1平均值k5 = 0;s1total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexd2elses1total = s1total + (x(k5) - xavg)^2;endends1suqare = s1total ./ sizexd2;s1sqrt = sqrt(s1suqare);%s1suqare,s1sqrt%s1suqare 残差数列x的⽅差 s1sqrt 为x⽅差的平⽅根S1k5 = 0;s2total = 0 ;for y5 = xk5 = k5 + 1;if k5 > sizexd2elses2total = s2total + (err1(k5) - err1avg)^2;endends2suqare = s2total ./ sizexd2;%s2suqare 残差数列err1的⽅差S2Cval = sqrt(s2suqare ./ s1suqare);Cval%nnn = 0.6745 * s1sqrt%Cval C检验值k5 = 0;pnum = 0 ;for y5 = xk5 = k5 + 1;if abs( err1(k5) - err1avg ) < 0.6745 * s1sqrtpnum = pnum + 1;%ppp = abs( err1(k5) - err1avg )elseendendpval = pnum ./ sizexd2;pval%p检验值%arr1 = x41fcast(1:6)%预测结果为区间范围预测步长和数据长度可调整程序参数进⾏改进。
灰色关联模型python代码摘要:1.灰色关联模型的概念2.灰色关联模型的Python 代码实现3.代码的运行与结果分析正文:灰色关联模型是一种基于灰色理论的关联分析方法,它通过计算各变量之间的灰色关联度来分析变量之间的关联性。
该模型广泛应用于工程、经济、社会等领域,对于数据挖掘、预测和决策具有重要意义。
下面我们将通过Python 代码实现灰色关联模型,并分析运行结果。
首先,我们需要安装`greyTheory`库,这是一个用于灰色关联分析的Python 库。
在命令行中输入以下命令进行安装:```pip install greyTheory```接下来,我们编写Python 代码来计算灰色关联度:```pythonimport numpy as npimport pandas as pdfrom greyTheory.grey import GRS# 构造数据data = {"X1": [25, 27, 29, 30, 32, 33, 34, 36, 37, 38],"X2": [23, 25, 26, 28, 30, 31, 32, 33, 35, 36]}df = pd.DataFrame(data)# 计算灰色关联度grs = GRS()result = grs.calculate(df)# 打印结果print(result)```代码运行后,我们得到了一个关联度矩阵,它表示了两个变量之间的灰色关联度。
关联度值的范围为-1 到1,值越接近1,表示两个变量之间的关联性越强;值越接近-1,表示两个变量之间的关联性越弱。
在上述示例中,我们构造了两组数据(X1 和X2),并计算了它们之间的灰色关联度。
灰色预测心设尹曲⑴#为原始数列,其1次累<加生成数列为炉=(孝①宀2\S,其中©=2^°:⑺卫=12…止i-1尋定文沙的灰导数为d(Jt)=玄㈣(Jt)=尤⑴的-工⑴(*-1).令尹为数列壬⑴的邻值生成数列,即尹)(町=加小(町十(1—a)x山(k-1).于是定文GM(1T1)的灰微分方程模型为d(k)+az①(上)=&_即或.严⑹+盘⑴懐)=乩⑴在式(1)中口①的称为灰导数’熬称为发展系数'弧称为白化背景值,b称为灰作用量。
将时刻表庄=23…用代入(O式有j<0)(2)-az⑴(2)=工®⑶—俺叫巧=»于是GMIL)樫型可表示为r=现在问题归结为求巧h在值。
用一元绒性回归,即最小二垂進求它们的估计值住=[]卜护跖护F奕厢上回归分析中求诂计值是用软件计算的,有标淮程博求解,如山訥甜等。
GM(1.1)的白化型对于的(1-1)的获微分方程⑴,如果将解导教矿悶的时報=%…屮观対连续叢里"则工⑴衩为时间i函敕卅®,于是-<'W耐应于导敕重级必%),白化背杲值刃(時对应于导數申⑴。
于是GM(1,1)的换微分方嗨对应于的白微分方程为写®4曲%「)=也⑵GAI(1>1)换色预刪的步叢1-數堀的椅噓弓处理为了保证©M(B1)屋複方达的可行性・需要対已却皴堀锁必要的检峻处Ho 设療皓数攥列为了-计算埶列的级比如果所有的级比都落在可容覆盖区间盂-內・则數摒列X糾可咲建立G*ICL-1)複型且可以避行页色预测。
否则,丙軌据懺适当的叢换处理,如平移銮换:取C使得敕培列严⑹二工蚀盘)+匚用二12…”的级比都落在可啓禎盖内。
(1)残差檢验:计算相对薙差Z 建立GM (L T 1)複型不妬设少弋以m 叫唠霸足上面的要求,以它芮議堀列建立GM(1>1)型蛊(仍(i)+血C1\A)=b ・用回归分祈求得目上的估计值"于是相应的白化模型为 气^十小卄工解为工叱)=0)①—勺中1-色-⑶ 应Q于是停到预测值壬⑴(上+1)=0叫1)一勺>加+仝血二12…卫一1=aa伙而相应地得到预«=x co \t +1)=x 0)(t+l)-x a)(i)3i =1,2,-?n-l ?如果对所有的^<0.1・则认为达到鞭嵩的要求:否则,若耐所有的|^)1<0^,则认対达到一般要求©(2)级比偏差値桧验:计算能)=1-呂学©如果对所有的|,则认为达列较高的要求孑吾则若对斫有的,则认为达到一般要求O灰色预测计算实例^…;=:=-■■■■昏例北方某城市1986—1992年道路交通噪声平均声级数据见表6序号年吶寺表拆市近年来交通噪声数据[眶(应)]二諾;二319S872.4第—爭:级比检验建立丢通噪屛均声级数锯时间序列如下:4198972.1j 1990?1.4 619?17201199771.6艸=(•严①卫购(2)厂卅⑺) =(711,72.4.71.4,72.1.71.4,7UQ.71.6)些(1)求级比k(k)忠防护住T)2=(几⑵山⑶.…也⑺)g=(0.982JJ.0042J.0098-0.9917J.0056)(2)级比判断由于所有的X.(10e[0.982J.009S],k=2,3.6故可以用双0)作满意的GM(1,1)建模’第二步:GM(1,1)建模(1)对原始数据X®作一次累加,即卞⑴=(71.L143.5215.9.288359.4.431.4,503)(2)构造数据矩阵B及数据向量Y-2)—H 弋3/>1⑶讦算1T心求解得F'⑴=(工倒〔1〉_-)e 弋Q f+-1*^+1)=0<l,U)--)£-t +-=-3092^--^+31000⑶求生咸数列值歸型齊看:n令“is 那血由上面的碉醯数可甲得,其中取菱由龙⑴(i}=恥壮曲5加得丁I —"炉閃=进悶-进德-尊(71儿72.4.72.2:72.1:71.9:71.7,71.6)^}=(s"a >亍⑴⑵,…,网⑺A<第三步;模型检验•>模型的各种检验指标值的计算结果见表工 •t*表7GM(1检验表<序号年俯原始值模型值残差相对误差级比偏差•>1 19S6 71.1 71.1<219S7 72.4 72.4 -0.0057 0.01%0.0023 <3 19S S 72.4 72.2 0.163S 0.23%0.0203 •>4 19S9 72.1 72.1 0.0329 0.05%-O.(K H8 •>5199071.4 71.9 -0-49S4 0.7%-0.0074 <61991 72.0 71.7 0.21599 037%0.0107<71992 71.6 71.6 0.037S0.05%-0.0032于是得到目=山的餡,立欖型7-B)'1B TY=(dt0.0023 72.6573dt+0.002ix (1>=72.657^心经验证・该模型的精度较高.可进行预测和预报计算的Matlab 程序如下:仃坝测和预报n=length(x); z=0;%取输入数据的样本量for i=1:nz=z+x(i,:)be(i,:)=z; %计算累加值,并将值赋予矩阵beend for i=2:n %对y(i-1,:)=x(i,:)%对原始数列平行移位 endfor i=1:n-1%计算数据矩阵B 的第一列数据c(i,:)=-0.5*(be(i,:)+be(i+1,:)); clCjdearxO=[71H 72.472A 72J71477m c n.lengthtxO);*'b%注意这里为列帖lamda =xD(l :n-1),A0(2:n)%计算级比range =minmaxflamda f )%计算级比的范阖 X1=cumsum(xO);%累加运算B=['0,5*(xl(l ;n ^l)+xl(2:n))t ones(n -1,1)]TY 二甸(2:町;口=B\Y%拟合参数u(l>=a .u(2)=bx=dsolve (+a 'x =b\f x(0)-xO^J ;%求徴分方程的特号解x =subs(xJ*a\,b r /xO ,Mu(l)P u(2)t xO(l)|)i%代入荷计痹擞值和初蜡值yucel =subs %求巳知数擁的扳测位y-vpa(x,6)奄其中的石表示显不白位数字yuce=[x0(l)T diff(yucel)]%羔分运算,还原数据 epsiIon=-yuce%计算战羞作用:求累加数列、求ab 的值、求预测方程、求残差clc %清屏,以使结果独立显示x=[71.172.472.472.171.472.071.6]; format long ;%设置计算精度if length(x(:,1))==1%对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x endM.I-JTVorhlllst 模型endfor j=1:n-1%计算数据矩阵B的第二列数据e(j,:)=1;endfor i=1:n-1%构造数据矩阵BB(i,1)=c(i,:);B(i,2)=e(i,:);endalpha=inv(B'*B)*B'*y;%计算参数矩阵即ab的值for i=1:n+1%计算数据估计值的累加数列,如改为n+1为n+m可预测后m-1个值ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha( 2,:)/alpha(1,:);%显示输出预测值的累加数列endvar(1,:)=ago(1,: )for i=1:n%显示输出预测值%如改n为n+m-1,可预测后m-1个值var(i+1,:)=ago(i+1,:)-ago(i,:);%估计值的累加数列的还原,并计算出下一预测值endfor i=1:nerror(i,:)=x(i,:)-var(i,:);%计算残差endc=std(error)/std(x);%调用统计工具箱的标准差函数计算后验差的比值cago alpha var%显示输出预测值的累加数列%显示输出参数数列%显示输出预测值error %显示输出误差c %显示后验差的比值作用:数据处理判断是否可以用灰色预测、求级比、求累加数列、求ab的值、求预测方程clc,clearx0=[71.172.472.472.171.472.071.6]';%注意这里为列向量n=length(x0);lamda=x0(1:n-1)./x0(2:n)%计算级比range=minmax(lamda')%计算级比的范围x1=cumsum(x0)%累加运算B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];Y=x0(2:n);u=B\Y%拟合参数u(1)=a,u(2)=bx=dsolve('Dx+a*x=b','x(0)=x0');%求微分方程的符号解x=subs(x,{'a','b','x0'},{u(1),u(2),x0(1)})%代入估计参数值和初始值yuce1=subs(x,'t',[0:n-1]);%求已知数据的预测值y=vpa(x,6)%其中的6表示显示6位数字yuce=[x0(1),diff(yuce1)]%差分运算,还原数据。
function hsyc(x0)%灰色模型GM(1,1)matlab代码在建立灰色模型前应对原始数据进行求%%%级比%%%%重要%输入原始时序列x0,输出各种所需参数%%%%实际使用该程序时应改变图像坐标轴%%%%%x0代表原始数据;x1代表x0经累加后;B代表所够造的矩阵B;Y代表向量Yn;au代表系数a,u构成的矩阵n=size(x0,2); %计算x0的列数x1=cumsum(x0,2); %将x0进行累加得到矩阵x1for k=1:n-1;b(k)=-0.5*(x1(k+1)+x1(k));y(k)=x0(k+1); %计算得到向量Y的转置矩阵yenda=ones(n-1,1);B=[b',a]; %计算得到矩阵BY=y'; %计算得到向量Yau=inv(B'*B)*B'*Y; %计算得到系数a,u构成的矩阵auA=au';k=1:n+10;X1(k)=(x0(1)-A(2)/A(1))*exp(-A(1)*(k-1))+A(2)/A(1); %计算预测累加数列的值X0(1)=X1(1);k=1:n+9;X0(k+1)=X1(k+1)-X1(k); %计算预测累加数列的还原值,即预测值for k=2:n;e(k)=X0(k)-x0(k); %计算残差E(k)=(X0(k)-x0(k))/x0(k); %计算预测值与实测值的差值跟实测值的比值,即残差与实测值的比值j(k)=x0(k-1)/x0(k); %计算实测数据的级比endk=1:n;p(k)=1-(1-0.5*A(1))*j(k)/(1+0.5*A(1)); %计算级比偏差e(k)、p(k)<0.1则说明模型达到较高要求,0.2>e(k)、p(k)>0.1则说明模型达到一般要求m=min(abs(e)); %计算残差中的最小值M=max(abs(e)); %计算残差中的最大值k=1:n;g(k)=(m+0.5*M)./(abs(e(k))+0.5*M); %计算关联系数R=sum(g')/(n-1); %计算关联度v=[1,5,120,185];axis(v);grid onplot([1996:2005],x0,'o-',[1996:2015],X0,'*:'); %画出原始数据跟时间序列的图像及预测数据跟时间序列的图像legend('原始数据','预测数据',4)au %输出参数a,u的值X0 %输出预测数列e %输出残差E %输出残差与原始数据的比值,定义的残差j %输出原始数据的级比p %输出偏比差R %输出关联度程度X1end。
灰色关联模型 python代码(原创版)目录1.灰色关联模型概述2.Python 代码实现灰色关联模型3.灰色关联模型的应用示例正文一、灰色关联模型概述灰色关联模型是一种基于灰色系统理论的关联度评价方法,主要应用于分析变量之间的关联程度。
灰色系统理论是研究不确定性、非线性、不稳定系统的科学,它以部分信息作为依据,对系统的整体信息进行综合处理。
灰色关联模型是灰色系统理论的重要组成部分,具有较强的实用价值。
二、Python 代码实现灰色关联模型在 Python 中,我们可以使用 numpy 库来实现灰色关联模型。
以下是一个简单的示例:```pythonimport numpy as npdef gray_association(x, y):n = len(x)x = np.array(x)y = np.array(y)Correlation_matrix = np.zeros((n, n))for i in range(n):for j in range(n):if i == j:Correlation_matrix[i][j] = 1else:Correlation_matrix[i][j] = (x[i] -np.mean(x)) * (y[j] - np.mean(y))Min_correlation = np.min(Correlation_matrix)Max_correlation = np.max(Correlation_matrix)Grey_correlation = (Correlation_matrix - Min_correlation) / (Max_correlation - Min_correlation)return Grey_correlationif __name__ == "__main__":x = [1, 2, 3, 4, 5, 6, 7, 8, 9]y = [2, 4, 6, 8, 10, 12, 14, 16, 18]result = gray_association(x, y)print("灰色关联度:", result)```三、灰色关联模型的应用示例灰色关联模型在实际应用中具有广泛的应用前景,例如在经济学、社会科学、生物学等领域。
灰色关联度matlab源程序(完整版)近几天一直在写算法,其实网上可以下到这些算法的源程序的,但是为了搞懂,最搞清楚,还是自己一个一个的看了,写了,作为自身的积累,而且自己的的矩阵计算类库也迅速得到补充,以后关于算法方面,基本的矩阵运算不用再重复写了,挺好的,是种积累,下面把灰关联的matlab程序与大家分享。
灰色关联度分析法是将研究对象及影响因素的因子值视为一条线上的点,与待识别对象及影响因素的因子值所绘制的曲线进行比较,比较它们之间的贴近度,并分别量化,计算出研究对象与待识别对象各影响因素之间的贴近程度的关联度,通过比较各关联度的大小来判断待识别对象对研究对象的影响程度。
简言之,灰色关联度分析的意义是指在系统发展过程中,如果两个因素变化的态势是一致的,即同步变化程度较高,则可以认为两者关联较大;反之,则两者关联度较小。
因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态(Dynamic)的历程分析。
灰色关联度可分成“局部性灰色关联度”与“整体性灰色关联度”两类。
主要的差别在于局部性灰色关联度有一参考序列,而整体性灰色关联度是任一序列均可为参考序列。
关联度分析是基于灰色系统的灰色过程, 进行因素间时间序列的比较来确定哪些是影响大的主导因素, 是一种动态过程的研究。
关联度计算的预处理,一般初值化或者均值化,根据我的实际需要,本程序中使用的是比较序列与参考序列组成的矩阵除以参考序列的列均值等到的,当然也可以是其他方法。
%注意:由于需要,均值化方法采用各组值除以样本的各列平均值clear;clc;yangben=[47.924375 25.168125 827.4105438 330.08875 1045.164375 261.37437516.3372 6.62 940.2824 709.2752 962.1284 84.87455.69666667 30.80333333 885.21 275.8066667 1052.42 435.81]; %样本数据fangzhen=[36.27 14.59 836.15 420.41 1011.83 189.5464.73 35.63 755.45 331.32 978.5 257.8742.44 23.07 846 348.05 1025.4 296.6959.34 39.7 794.31 334.63 1016.4 317.2752.91 17.14 821.79 306.92 1141.94 122.044.21 4.86 1815.52 2584.68 963.61 0.006.01 2.43 1791.61 2338.17 1278.08 30.873.01 1.58 1220.54 956.14 1244.75 3.9125.65 7.42 790.17 328.88 1026.01 92.82115.80 27 926.5 350.93 1079.49 544.3812.63 8.75 1055.50 1379.00 875.10 1.65]; %待判数据[rows,cols]=size(fangzhen);p=0.5; %分辨系数[m,n]=size(yangben);R=[];for irow=1:rowsyy=fangzhen(irow,:);data=[yy;yangben];data_gyh1=mean(yangben)for i=1:m+1for j=1:ndata_gyh(i,j)=data(i,j)/data_gyh1(j);endendfor i=2:m+1for j=1:nDij(i-1,j)=abs(data_gyh(1,j)-data_gyh(i,j));endendDijmax=max(max(Dij));Dijmin=min(min(Dij));for i=1:mfor j=1:nLij(i,j)=(Dijmin+p*Dijmax)/(Dij(i,j)+p*Dijmax); endendLijRowSum=sum(Lij');for i=1:mRij(i)=LijRowSum(i)/n;endR=[R;Rij];endRmatlab求灰色关联度矩阵源代码2010-12-11 22:57 function greyrelationaldegree(X,c)%GRAYRELATIONALDEGREE this function is used for calculating the gery %relation between squence%rememeber that the first column of the input matrix is the desicion %attribution squences.what we want to calculate is the grey ralational degree between%it and other attributions%X is the squence matrix, c is the parameter used in the function%in most of the time, the value of c is 0.5firstrow = X(1,:);reci_firstrow = 1./firstrow;reci_convert = diag(reci_firstrow);initialMIRROR = X*reci_convert;% find the initial value mirror of the sequce matrixA = 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(['B' num2str(i)]))amin = min(eval(['B' num2str(i)]))maxarray(i-1)=amaxminarray(i-1)=aminend %find the difference squence and the max value and min value of each squencemaxmax = max(maxarray)minmin = min(minarray)for(i=2:nrow)for(j=1:ncolumn)eval(['greyrelationdegree' num2str(i)'(j)=(minmin+c*maxmax)/(B' num2str(i) '(j)+c*maxmax)'])endend % calculate the greyralational degree of each datafor(i=2:nrow)eval(['greyrelatioanaldegree_value' num2str(i) '= mean (greyrelationdegree' num2str(i) ')' ])end基于matlab灰色关联度计算的实现2006年07月28日星期五上午 11:06 function r=incident_degree(x0,x1)%compute the incident degree for grey model.%Designed by NIXIUHUI,DalianFisherUniversity.%17 August,2004,Last modified by NXH at 21 August,2004%数据初值化处理x0_initial=x0./x0(1);temp=size(x1);b=repmat(x1(:,1),[1 temp(2)]);x1_initial=x1./b;%分辨系数选择K=0.1;disp('The grey interconnect degree is: ');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的数据进行编程实现,程序如下:%清除存空间等clear;close all;clc;%载入源数据 %其实这里可以载入execl表格的n=15; %参与评价的人数m=4; %参与评价的指标个数X_0=zeros(n,m); % 数据矩阵X_2=zeros(n,m); %偏差结果的求取矩阵X_3=zeros(n,m); % 相关系数计算矩阵a1_0=[13 18 17 18 17 17 18 17 13 17 18 13 18 13 18];a2_0=[18 18 17 17 18 13 17 13 18 13 17 13 13 17 17];a3_0=[48.67 43.33 43.56 41.89 39.47 43.44 37.97 41.14 39.67 39.83 34.11 40.58 34.19 30.75 21.22];a4_0=[10 10.7 3 5.4 5.4 0.7 4.2 0.5 9.3 0.85 2.9 5.45 4.2 2.7 6]; %指标数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) %为什么这个地方会出问题呢for j=1:1:nX_2(j,i)=abs(X_1(j,i)-x0(i));end;i=i+1;end%3 确定偏差的最值error_min=min(min(X_2));error_max=max(max(X_2));%4 计算相关系数i=1;p=0.5;while(i~=m+1)for j=1:1:nX_3(j,i)=(error_min+p*error_max)/(X_2(j,i)+p*error_max); end;i=i+1;end%X_3 %可以在此观察关联矩阵%5 计算各个学生的关连序a=zeros(1,n);for j=1:1:nfor i=1:1:ma(j)=a(j)+X_3(j,i); %%%%其实可以直接用sumend;a(j)=a(j)/m; %%%%%%%%%可以改进%%%%%%%%%%123下一页%end%a %在此可以观测各个学生的序%改进:如果各个指标的所占权重不一样的话,可以添加相应的权系数%6 排序b=a';[c,s]=sort(b);for i=1:1:nd(i)=i;endd=d';result=[d b c s]%7 将结果显示出来figure(1);plot(a);figure(2)bar(a); %柱状图最后所得到的结果如图3到图5所示。
1灰色预测模型 GM(1,1)的matlab 运行代码例 由1990—2001年中国蔬菜产量,建立模型预测 2002年中国蔬菜产量,并对预测结果作检验。
分析建模:给定原始时间1990—2001年资料序列X (0)(k),对X (0)(k) 生成1-AGO(累加)序列X (1)(k)及Y n。
见下表K 1 2 3 4 5 6 7 8 9 10 11 12 X ⑼19519 ,19578 ,19637,19695,16602, 25723, 30379, 34473, 38485, 40514, 42400, 48337 X (1)19519, 39097, 58734, 264605,307005,355342Y n 19578 19637 40514 42400 48337其中 X ⑴(k):x (0)(i);i 1Y n = [X (0)(2),X (0)(3), ,X (0) (12)]TX (0)(k)的 GM(1,1),得到z (1^2) 10.5 X⑴(1) X (。
⑵1 -29308.0 z ⑴(3) 1 0.5 X ⑴(2) X "(3)1 -48915.5 z (1)(4) 10.5 X ⑴(3) X (1^4)1 -68581.5 z ⑴(5) 1 0.5 X(4) X (1^5)1 -86730.0 z (1)(6) 10.5 X ⑴(5) X⑴⑹ 1 -107892.5 z ⑴(7) 1 0.5 X ⑴(6) X ("(7)1 -135943.5 z ⑴(8) 1 0.5 X ⑴(7) X "(8)1 -168369.5 z ⑴(9) 1 0.5 X ⑴(8) X ⑴(9)1-204848.5 z ⑴(10) 1 0.5 X ⑴(9) X ⑴(10) 1 244348.0 z ⑴(11) 10.5 X ⑴(10) X ("(11) 1 -331173.5 z ⑴(12) 10.5 X ⑴(11)X ("(12) 1-5236.21 1 1 1 1 1 1 1 1 1 将B 和Y n 代入辨识算式,有:对上述 ka(B TB) 1B T?Y n b得灰色GM(1,1)模型为0.1062105 13999.9(1)灰微分方程 X (0) (k)-0.1062105 Z ⑴(k)=13999.9刃⑼亿 1) 15248.968e 0.1062105t(5)残差检验:(6)后验差检验:12[X ( 0)(i) X (0)]2112L , X (0)丄 X (0)(i) n 1 12 i 1 C<0.35好;C<0.5合格;00.6不合格。
matlab灰色关联度计算
灰色关联度计算是一种用于分析变量之间关联程度的方法,常用于数据挖掘和预测分析中。
在MATLAB中,可以通过以下步骤进行灰色关联度计算:
1. 数据准备,首先,准备好需要分析的数据,确保数据的准确性和完整性。
2. 数据预处理,对数据进行预处理,包括数据清洗、归一化等操作,以便进行后续的灰色关联度计算。
3. 灰色关联度计算函数,MATLAB提供了灰色关联度计算的相关函数,例如graycoprops和graycomatrix等。
你可以使用这些函数来计算数据之间的灰色关联度。
4. 灰色关联度分析,利用灰色关联度计算函数,对数据进行灰色关联度分析,得到变量之间的关联度值。
5. 结果展示,最后,可以将灰色关联度分析的结果进行可视化展示,例如绘制关联度矩阵图或者相关性曲线图,以便更直观地理
解变量之间的关联程度。
需要注意的是,灰色关联度计算涉及到一些数学和统计知识,因此在进行计算时需要对数据和算法有一定的理解和把握。
希望这些步骤能够帮助你在MATLAB中进行灰色关联度计算。
matlab灰色关联初值化量纲化处理方法《MATLAB灰色关联初值化量纲化处理方法》一、概述MATLAB灰色关联初值化量纲化处理方法是一种用于将指标数据从跨地域、跨时间和跨行业的不同量纲转换为统一量纲标准的数据处理方法。
其原理是:灰色关联分析是一种基于模糊推理的系统,将原始数据作为输入,通过灰色关联分析计算出的系数作为输出,用于实现输入和输出量纲的转换。
灰色关联分析的基本思想是:通过灰色关联分析计算出的系数可以用来描述不同量纲的指标数据之间的关系,从而将不同量纲的指标数据进行统一量纲标准的处理。
二、MATLAB灰色关联初值化量纲化处理步骤1.首先,将原始数据输入MATLAB环境中,设置指标数据的最大值和最小值;2.设置初值,将指标数据标准化为范围[0,1],量纲化处理;3.计算灰色关联系数,使用MATLAB命令计算出灰色关联分析的系数;4.设置输出量纲,采用MATLAB命令设置指标数据的最大值和最小值,以及灰色关联分析的系数,实现量纲化处理;5.检验标准量纲,使用MATLAB命令检验指标数据是否满足统一量纲标准。
三、MATLAB灰色关联初值化量纲化处理优缺点(1)优点1. MATLAB灰色关联初值化量纲化处理方法具有较强的适用性,可以用于跨地域、跨时间和跨行业的指标数据处理;2.该方法具有较强的灵活性和可操作性,可以根据用户的实际需求,灵活设置指标数据的最大值和最小值,以及灰色关联分析的系数,从而实现量纲化处理;3.该方法具有较强的可靠性,用户可以根据计算出的灰色关联系数,使用MATLAB命令进行量纲化处理,从而实现输入和输出量纲的转换;4.该方法可以有效提高指标数据的精确度,从而提高实际应用的可靠性和准确性。
(2)缺点1.MATLAB灰色关联初值化量纲化处理方法运算速度较慢;2.该方法需要一定的统计学基础,计算出的灰色关联系数可能会受多种因素的影响,不一定准确;3.该方法可能会受到某些指标数据缺失或异常值的影响,从而影响量纲化处理的准确性。
28. 灰色(huīsè)关联分析一、灰色系统理论(lǐlùn)简介若系统的内部信息是完全已知的,称为白色(báisè)系统;若系统的内部信息是一无所知(一团漆黑),只能从它同外部的联系来观测研究,这种系统便是黑色系统;灰色系统介于二者之间,灰色系统的一部分信息是已知的,一部分是未知的。
灰色系统(xìtǒng)理论以“部分信息已知、部分信息未知”的“小样本(yàngběn)”、“贫信息”不确定型系统为研究对象,其特点是:(1)认为不确定量是灰数,用灰色数学来处理不确定量,使之量化,灰色系统理论只需要很少量的数据序列;(2)观测到的数据序列看作随时间变化的灰色量或灰色过程,通过鉴别系统因素之间发展趋势的相似或相异程度,即进行关联度分析;(3)通过累加生成和累减生成逐步使灰色量白化,从而建立相应于微分方程解的模型,从而预测事物未来的发展趋势和未来状态。
二、灰色关联度分析1. 要定量地研究两个事物间的关联程度,可以用相关系数和相似系数等,但这需要足够多的样本数或者要求数据服从一定概率分布。
在客观世界中,有许多因素之间的关系是灰色的,分不清哪些因素之间关系密切,哪些不密切,这样就难以找到主要矛盾和主要特性。
灰因素关联分析,目的是定量地表征诸因素之间的关联程度,从而揭示灰色系统的主要特性。
关联分析是灰色系统分析和预测的基础。
关联分析源于几何直观,实质上是一种曲线间几何形状的分析比较,即几何形状越接近,则发展变化趋势越接近,关联程度越大。
如下图所示:xt曲线A与B比较平行,则认为A与B的关联程度大;曲线C与A随时间变化的方向很不一致,则认为A与C的关联程度较小;曲线A与D相差最大,则认为两者的关联程度最小。
2. 关联度分析是分析系统中各因素关联程度的方法步骤:(1) 计算(jì suàn)关联系数设参考(cānkǎo)序列为比较(bǐjiào)序列为比较(bǐjiào)序列X i对参考(cānkǎo)序列X0在k时刻的关联系数定义为:其中,和分别称为两级最小差、两级最大差,称为分辨系数,越大分辨率越大,一般采用对单位不一,初值不同的序列,在计算关联系数之前应首先进行初值化,即将该序列的所有数据分别除以第一数据,将变量化为无单位的相对数值。
灰色邓氏关联度分析
% P12 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_deng(x)
s = size(x);
len = s(2);
num = s(1);
ro = 0.5;
for i = 1: num
x(i,:) = x(i,:)./x(i,1);
end
dx(num,len) = 0;
for i = 2 : num
for k = 1 : len
dx(i,k) = abs(x(1,k) - x(i,k));
end
end
max_dx = max(max(dx));
min_dx = min(min(dx));
r(1,1:len-1) = 1;
for i = 2 : num
for k = 1 : len
r(i,k) = (min_dx + ro*max_dx)/(dx(i,k) + ro*max_dx);
end
end
r1 = sum(r(2:num,:),2)/(len);
改进灰色绝对关联度分析
% P11 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_gjjd(x)
s = size(x);
len = s(2);
num = s(1);
for i = 1: num
x(i,:) = x(i,:)./x(i,1);
end
dx(num,len-1) = 0;
for i = 1 : num
for j = 1 : len - 1
dx(i,j) = x(i,j+1) - x(i,j);
end
end
c = 1;
beta(1,1:len-1) = 0;
w(1,1:len-1) = 0;
for i = 2 : num
temp = sum(abs(x(i,:) - x(1,:)),2);
for k = 1 : len - 1
beta(i,k) = atan((dx(i,k) - dx(1,k))/(1 + dx(i,k)*dx(1,k)));
if beta(i,k) < 0
beta(i,k) = pi + beta(i,k);
end
w(i,k) = 1 - abs(x(i,k) - x(1,k))/temp;
end
end
r = c./(c + tan(beta./2));
wr = w.*r;
r1 = sum(wr(2:num,:),2)/(len - 1);
灰色绝对关联度分析
% P18 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_jd(x)
s = size(x);
len = s(2);
num = s(1);
for i = 1: num
x(i,:) = x(i,:)./x(i,1);
end
dx(num,len-1) = 0;
for i = 1 : num
for j = 1 : len - 1
dx(i,j) = x(i,j+1) - x(i,j);
end
end
r(1,1:len-1) = 1;
for i = 2 : num
for k = 1 : len - 1
r(i,k) = 1/(1 + abs(dx(1,k) - dx(i,k)));
end
end
r1 = sum(r(2:num,:),2)/(len - 1);
灰色T型关联度分析
% P19 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_t(x)
s = size(x);
len = s(2);
num = s(1);
dx(num,len-1) = 0;
for i = 1 : num
for j = 1 : len - 1
dx(i,j) = abs(x(i,j+1) - x(i,j));
end
d_x = sum(dx(i,:),2)/(len - 1);
x(i,:) = x(i,:)./d_x;
end
dx(num,len-1) = 0;
for i = 1 : num
for j = 1 : len - 1
dx(i,j) = x(i,j+1) - x(i,j);
end
end
r(1,1:len-1) = 1;
for i = 2 : num
for k = 1 : len - 1
if dx(1,k)*dx(i,k) == 0
r(i,k) = sign(dx(1,k)*dx(i,k));
else
r(i,k) = sign(dx(1,k)*dx(i,k))*min(abs(dx(1,k)),abs(dx(i,k))) / max(abs(dx(1,k)),abs(dx(i,k)));
end
end
end
r1 = sum(r(2:num,:),2)/(len - 1);
灰色斜率关联度分析
% P20 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_xl(x)
s = size(x);
len = s(2);
num = s(1);
for i = 1: num
x(i,:) = x(i,:)./x(i,1);
end
dx(num,len-1) = 0;
for i = 1 : num
for j = 1 : len - 1
dx(i,j) = x(i,j+1) - x(i,j);
end
end
r(1,1:len-1) = 1;
for i = 2 : num
for k = 1 : len - 1
r(i,k) = 1/(1 + abs(dx(1,k)/x(1,k+1) - dx(i,k)/x(i,k+1)));
end
end
r1 = sum(r(2:num,:),2)/(len - 1);。