数模:灰色预测

本文介绍了Matlab中元胞数组的创建、赋值、索引和删除操作,并通过示例详细说明。同时,文章展示了如何使用Matlab实现灰色预测模型GM(1,1),包括原始序列处理、模型参数计算和预测值求解。最后,给出了预测精度的计算方法和评价标准。
摘要由CSDN通过智能技术生成

matlab中的元胞数组

元胞数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便。cell元胞数组,存储不同类型的数据。

1.元胞数组的创建

示例1
A={[1,2,3],ones(3),'matlab'}
%%%%%结果显示%%%%%%%
A =

  1×3 cell 数组

  [1×3 double]    [3×3 double]    'matlab'

示例2
B=cell(1,3)
%%%%%%%%结果显示%%%%%%%
B =

  1×3 cell 数组

    []    []    []

2.元胞数组的赋值

%%
C(1,1)={'matlab'};
C(1,2)={[1 2 3;4 5 6;]};
C(1,3)={[]};
C(1,4)={3+2i};
%%%%%%%%%结果展示%%%%%%%%%%
C =

  1×4 cell 数组

    'matlab'    [2×3 double]    []    [3.0000 + 2.0000i]

3.元胞数组的索引

注意C()结果是元胞数组
     和C{}结果是元素    的区别
>> C(1)

ans =

  cell

    'matlab'

>> C{1}

ans =

matlab

>> C(2)

ans =

  cell

    [2×3 double]

>> C{2}

ans =

     1     2     3
     4     5     6

4.元胞数组的删除

元胞数组删除操作区别就在于{}()
a={1,2,3};
a{1}=[]; %并不能删除第一个cell单元,只是变成空值
a(1)=[]; %删除第一个单元
a(:)=[]; %一次性删除所有cell单元

灰色预测模型

原始序列:X(0)
累加序列:X(1)
在这里插入图片描述

由累加序列得出滑动平均,进而构建B,求a,u

在这里插入图片描述
利用matlab求解的程序(当然用excel也是可以的)

%%

% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是 GM(1,1)
% 原始数据的处理方法是一次累加法。
y=input('请输入数据 ');
n=length(y);                                                                            %%y是原始序列
yy=ones(n,1);                                                                    %%yy矩阵初始化
yy(1)=y(1);
for i=2:n
    yy(i)=yy(i-1)+y(i);                                                     %%构建yy为累加序列
end
B=ones(n-1,2);
for i=1:(n-1)
    B(i,1)=-(yy(i)+yy(i+1))/2;                                  %%构建B矩阵(滑动平均)
    B(i,2)=1;
end
BT=B';                                                              %%B的转置
for j=1:n-1
    YN(j)=y(j+1);                                           %%构建Yn矩阵/向量
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);                                                             %%解出a,u
t=u/a;                                                                    %%令t=u/a
i=1:n+2;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;           %表达式
yys(1)=y(1);
for j=n+2:-1:2
    ys(j)=yys(j)-yys(j-1);     %进行还原得到ys
end
x=1:n;
xs=2:n+2;
yn=ys(2:n+2);
plot(x,y,'^r',xs,yn,'*-b');     %原始数据和预测数据
都画入图内进行对比比较

精度计算

%%
%%%%%%%%%%%%%%%%%计算该方法的精度%%%%%%%%%%%%%%%%%%%
sum1=0;
sumpe=0;
for i=1:n
    sumpe=sumpe+y(i);
end
pe=sumpe/n;
for i=1:n;
    sum1=sum1+(y(i)-pe).^2;
end
s1=sqrt(sum1/n);
sumce=0;
for i=2:n
    sumce=sumce+(y(i)-yn(i));
end
ce=sumce/(n-1);
sum2=0;
for i=2:n;
    sum2=sum2+(y(i)-yn(i)-ce).^2;
end
s2=sqrt(sum2/(n-1));
c=(s2)/(s1);
disp(['后验差比值为:',num2str(c)]);
if c<0.35
    disp('系统预测精度好')
else if c<0.5
        disp('系统预测精度合格')
    else if c<0.65
            disp('系统预测精度勉强')
        else
            disp('系统预测精度不合格')
        end
    end
end

disp(['下个拟合值为 ',num2str(ys(n+1))]);
disp(['再下个拟合值为',num2str(ys(n+2))]);

几个相关内容
B站一视频
文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值