没事玩了一下matlab

发现现在网上的代码都是一组数据预测

所以我就写个批量数据的预测

顺便学习下matlab

----------------------------------我是快乐的分割线------------------------------------

灰色预测的主要思想是:

1、给定一组数据

2、进行累加,即

X(1)1=x(0)1

X(1)2=x(0)1+x(0)2

X(1)3=x(0)1+x(0)2+x(0)3

3、最终目的是为了构造预测方程:

其中:

而为了求得上式,需要:

好的,就是这样子灰色预测就写完了,下面就是各种循环各种写了

----------------------------------我是快乐的分割线------------------------------------

为了批量对多组数据进行预测

所以加入了一个打开excel:

%读取excel的数据,data = xlsread(filename, sheet, range)
data=xlsread('D:\MATLAB\GM.xlsx', 1, 'A1:E2');

然后写个大大的for循环:

m=ndims(data);%维度
for i = 1:m
...
end

省略号里面就是一组数据的预测程序了

灰色预测的思想很简单

我就不分段解释了

全部代码如下

function GM(t)
clc; %清屏,以使计算结果独立显示
format long g; %设置计算精度 %读取excel的数据,data = xlsread(filename, sheet, range)
data=xlsread('D:\MATLAB\GM.xlsx', 1, 'A1:E2'); %fprintf(data(1,:));
%x=data(1,:)
%n=length(data)%长度
%加了;分号表示不将结果显示出来 m=ndims(data);%维度 t=input('你要预测多少期?');
for i = 1:m
z=0;
x=data(i,:);
%下面的全部内容都在这个循环里面进行
%注意下面的那个end
%每一行的长度
n=length(data);
for j = 1:n
z = z + x(j);
be(j,:)=z;
end
%matlab的变量定义好乱,可以随便定义,都是局部变量
%本文这里除了i之外其他都算局部变量吧 %计算数据矩阵B的第一列和第二列数据
for j = 1:n-1
%第一列
c(j,:)=-0.5*(be(j,:)+be(j+1,:));
%第二列
e(j,:)=1;
%代入矩阵B中
B(j,1)=c(j,:);
B(j,2)=e(j,:);
end %对原始数列平行移位
for j=2:n
y(j-1,:)=x(1,j);
end %计算参数α、μ矩阵
alpha=inv(B.'*B)*B.'*y; %计算数据估计值的累加数列
for k = 0:n-1+t
ago(k+1,:)=(be(1)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(k))+alpha(2,:)/alpha(1,:);
end %估计值的累加数列的还原,并计算出下一预测值
for j=1:n-1+t
var(j+1,:)=ago(j+1,:)-ago(j,:);
end %给出预测结果
result(i,:)=var(n+t,1);
%计算残差
for j=2:n
error(j,:)=var(j,:)-x(1,j);
end
%调用统计工具箱的标准差函数计算后验差的比值c
S1=std(x)
S2=std(error)
c=S2/S1
end
disp('预测结果为:')
disp(result(:,1))

花了一个下午复习了一下matlab

发现编写m文件不是很难

但是matlab的语言逻辑有点乱

要不是我的逻辑有点乱

---------------------------------------orz-----------------------------------

matlab批量灰色预测的更多相关文章

  1. [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)

    灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...

  2. 灰色预测--matlab&python实现

    function SGrey X0 = input('请输入原始负荷数据:'); %输入原始数据 n = length(X0); %原始n年数据 %累加生成 X1 = zeros(1,n); for ...

  3. R实现灰色预测

    1.简介 预测就是借助于对过去的探讨去推测.了解未来.灰色预测通过原始数据的处理和灰色模型的建立,发现.掌握系统发展规律,对系统的未来状态做出科学的定量预测.对于一个具体的问题,究竟选择什么样的预测模 ...

  4. 灰色预测原理及JAVA实现

    最近在做项目时,用户不想使用平均值来判断当前数据状态,想用其他的方式来分析数据的变化状态,在查找了一些资料后,想使用灰色预测来进行数据的预测.下面的内容是从网上综合下来的,java代码也做了一点改动, ...

  5. matlab批量读取一个文件夹里类似命名的mat文件

    参考网址: Matlab读取同一路径下多个txt或mat文件总结 matlab 批量读取数据文件.mat .dat 整理:matlab批量读入数据文件的方法 首先命名方式体现在只是名字里数字有变化,其 ...

  6. 灰色预测 GM11模型

    灰色预测实现见:https://www.jianshu.com/p/a35ba96d852b from pandas import Series from pandas import DataFram ...

  7. 使用matlab批量处理图像后在指定文件夹存储

    使用matlab批量处理图像后在指定文件夹存储 clear;clc;close all; Files=dir('D:\文件及下载相关\文档\MATLAB\postgraduate\Kodak\*.jp ...

  8. MATLAB批量修改图片名称

    申明:转载请注明出处. 设在“D:\UserDesktop\pic\”目录下有很多张格式为jpg照片,命名不规则,如图. 现在用MATLAB批量修改所有图片的命名格式,改为1.jpg,2.jpg,.. ...

  9. python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导

    来源公式推导连接 https://blog.csdn.net/qq_36387683/article/details/88554434 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模 ...

随机推荐

  1. linux命令:pwd

    1.介绍: pwd可以查看目录的完整路径,全称是Print Working Directory,. 2.命令格式 pwd [选项] 3.命令作用 查看目录的完整路径 4.常用选项 -L 当路径为链接路 ...

  2. # 20145210 《Java程序设计》第06周学习总结

    教材学习内容总结 第十章 输入\输出 10.1 InputStream与OutputStream •串流设计的概念 •java将输入\输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 •从应 ...

  3. (Your)((Term)((Project)))

    Description You have typed the report of your term project in your personal computer. There are seve ...

  4. HDU 3357

    http://acm.hdu.edu.cn/showproblem.php?pid=3357 给出公司间的控股关系,问有多少组不合法数据,自己控股自己不合法,a控股b,b控股c,则a控股c 其实就是找 ...

  5. 计算机硕士工资一览表 08年最新各大IT公司薪水行

    编号:1017时间:2016年6月13日11:26:20功能:计算机硕士工资一览表 08年最新各大IT公司薪水行 URL :http://blog.csdn.net/icerock2000/artic ...

  6. 十一 SOA 与 ESB

    一 SOA 1. 定义: a) 一种充分利用开放标准,将软件资产展现为服务的结构. b) 提供软件资产标准的展现和交互途径 c) 在开发其他应用的时候,可以将独立的软件资产封装为一个一个的“积木”. ...

  7. Java基础类型与其二进制表示

    Java中的基础类型有:byte.short.int.long.float.double.char和boolean. 它们可被分为四种类型,整型.浮点型.char型和boolean型. 整型:byte ...

  8. win10新增快捷键

    按此键   出现位置 重要程度 联想记忆 替代 用途 +A                    打开“操作中心” 右侧,   ★★★★★  Action    控制面板 ‌ +S           ...

  9. SQL编写

    //用户表,用户ID,用户名称create table t_user (user_id int,username varchar(20));//用户帐户表,用户ID,用户余额(单位分)create t ...

  10. Oracle语句

    分页查询: select rn,last_name,salary from( select rownum rn,last_name,salary from( select last_name,sala ...