没事玩了一下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. iOS 微信 音频 视频自动播放

    iOS 微信 音频 视频自动播放 http://www.w3ctech.com/topic/1165

  2. K Best(最大化平均数)_二分搜索

    Description Demy has n jewels. Each of her jewels has some value vi and weight wi. Since her husband ...

  3. 查单神器v1.0 升级 →B站看鬼畜神器v1.0

    去年学校实习,我去了一家快递输单公司工作.工作任务就是把运单图片上的内容(寄件人,地址之类)输入到公司的数据库里.每天输单结束后,还要对一些容易错的运单进行排查.单量多的时候一天甚至要查千张以上的运单 ...

  4. 阅读<构建之法>第13、14、15、16、17章 与 《一个程序员的生命周期》读后感

    第十三章   软件测试 这一章介绍了很多关于测试的方法,比如说单元测试,代码覆盖率测试,构建验证测试,验收测试等,我有一个很纠结的问题,如果我开发软件,是把这么多测试全做完,还是挑一些测试来进行呢?如 ...

  5. 转:UniqueID和ClientID的来源

    转:http://www.cnblogs.com/GrayZhang/archive/2009/03/05/how-uniqueid-is-generated.html 在<漫话ID>一文 ...

  6. VMDK镜像迁移到KVM(二)

    KVM has the ability to use VMware's .vmdk disk files directly, as long as the disk is wholly contain ...

  7. editplus 常用快捷键汇总 大小写代码折叠

    文本类 新建普通文本:Ctrl+N新建浏览器窗口:Ctrl+Shift+B新建HTML页:Ctrl+Shift+N打开:Ctrl+O打开一个现有的文档文件结尾:Ctrl+End选区扩展到文档结尾处:C ...

  8. Foobar音乐播放器——最佳音乐播放器 - imsoft.cnblogs

    简单皮肤 下载地址:链接: http://pan.baidu.com/s/1kTwn2dh 密码: lf5f

  9. 最大流 Dinic

    struct Dinic { struct node { int x,y,c,next; }line[MAXM]; int Lnum,_next[MAXN],dis[MAXN],dp[MAXN]; b ...

  10. UVa 1388 - Graveyard

    题意:有一个周长为10000的圆上等距分布着n个雕塑,现在又加入m个雕塑,位置随意,希望n+m个雕塑仍然均匀分布.这就要移动其中一些雕像,求移动的最小距离. 这个题的方法很巧妙,首先将整个圆分成(m+ ...