%灰色预测优点:操作简单、所需数据量少,一般只要4个数据便可依据灰色序列进行预测了
%灰色模型:了解某些信息又不能完全掌握其“脾性”,用来解决不确定性问题
%关键字: 灰色关联度矩阵
%灰色系统的程序设计
clc;
close;
clear all;
%控制输出结果精度
format short;
%原始数据
x = [];
n1 = size(x,1);%size(x,1)表示返回矩阵x的行数
%数据标准化处理
for i = 1:n1
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(cofficient')/size(cofficient,2);
r(i,:) = corr_degree;
end
%输出关联度值并绘制柱形图
r;
bar(r,0.90); %设置相关bar的宽度和控制一个组之间bar的距离。默认宽度是0.8,所以如果你不指定x,这些一个组内的bars有一个比较小的距离。如果宽度是1,则一个组内的bars是相互紧挨着的。
axis tight;%设置坐标轴显示范围为紧凑型
%从左到右依次是.
legend('固定资产投资','工业投资','农业投资','科技投资','交通投资');
%以下程序是为了给x轴添加汉字标签
%其基本原理是先去掉x轴上的固有标签,然后用文本标注x轴
%去掉x轴上的默认标签
set(gca,'XTickLable','');%去掉x轴刻度
%设定x轴刻度的位置,这里有6个母因素
n = 6;
%这里注意:x_range范围如果是[1 n]会导致部分柱形条不能显示出来
%所以范围要缩小一点
x_value = 1:1:n;
x_range = [0.6 n+.4];
%获取当前图形的句柄
set(gca,'XTick',x_value,'XLim', x_range);
%在x轴上标记6个母因素
profits = {'国民收入','工业收入','农业收入','商业收入','交通收入','建筑业收入'};
y_range = ylim;
%用文本标注母因素名称
handle_data = text(x_value,y_range(1)*ones(1,n)+.018,profits(1:1:n));
%把文本的字体设置合适的格式和大小并旋转一定的角度
set(handle_date,'HorizontalAlignment','right','VerticalAlignment','top','Rotation',35,'fontname','Arial','fontsize',10.5);
%y轴标记
ylabel('y');
title('投资对收入的作用');