1. matlab中灰色模型新陈代谢模型的代码
result(i) = gm11(x0,1); % 将预测一期的结果保存到result中,这段代码总是有错误提示。其原因是题主缺这个gm11() 灰色模型自定义函数。解决方法,下载或求助这个函数文件。
2. 求助灰色马尔科夫模型的matlab代码
matalb工具箱(hmmbox)中都是函数,没有输入参数是无法运行的。 你可以新建一个文件,对函数的输入变量复试,然后调用函数就可以运行了。 我刚学matlab也是这样,建议先看一本入门的书籍,《matlab宝典》不错。
3. matlab的灰色模型预测怎么编程
灰色预测模型为GM(1,1) 灰参数a和u的值: a=-0.0323252892223847 u=14042.3315313962 原始序列预测值: 13205 14705 15188 15687 16203 16735 17285 17853 18439 19045 累加序列预测值: 14705 15188 15687 16203 16735 17285 17853 18439 1904...
4. 请您帮忙跑一个Matlab的灰色模型的模型。
根据你提供的数据,从下图不难看出,用灰色模型来预测是不太合适的。
5. 怎样用matlab实现灰色模型(GM(1.1))
clear;
clc;
x0=[127627 128453 129227 129988 130756];
n=length(x0);
lamda=x0(1:n-1)./x0(2:n)
range=minmax(lamda)
x1=cumsum(x0)
for i=2:n
z(i)=0.5*(x1(i)+x1(i-1));
end
B=[-z(2:n)',ones(n-1,1)];
Y=x0(2:n)';
u=B\Y
x=dsolve('Dx+a*x=b','x(0)=x0');
x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});
yuce1=subs(x,'t',[0:n-1]);
digits(6),y=vpa(x) %为提高预测精度,先计算预测值,再显示微分方程的解
yuce=[x0(1),diff(yuce1)]
epsilon=(x0-yuce)./x0 %计算残差
delta=abs(epsilon./x0) %计算相对误差
rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda %计算级比偏差值
6. matlab 灰色预测模型 进,菜鸟高分求救!
先把a1那样输入,然后把后面所有1:7改为1:8,1:8改为1:9,然后你要看a1第一个数据是哪一年的,比如你最后想输出2025年的数据,那你就看2025和a1第一个数据的年份之差,设为t。那2025年预测量=y(t+1)-y(t)。ps:你是美赛的吧。。。
7. matlab解决灰色模型代码 有点错误 求教
楼主,我试了下,没错啊,这段代码你不能全部复制到matlab的命令窗口中去
首先,你得把矩阵X赋值,X不是你要处理的数据么?没有X程序运行不下去,
然后,将矩阵X赋值后你只需要复制下面这段代码就OK了
clc %清屏,以使结果独立显示
format long; %设置计算精度
if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换
x=x';
end
n=length(x); %取输入数据的样本量
z=0;
for i=1:n %计算累加值,并将值赋予矩阵be
z=z+x(i,:);
be(i,:)=z;
end
for i=2:n %对原始数列平行移位
y(i-1,:)=x(i,:);
end
for i=1:n-1 %计算数据矩阵B的第一列数据
c(i,:)=-0.5*(be(i,:)+be(i+1,:));
end
for j=1:n-1 %计算数据矩阵B的第二列数据
e(j,:)=1;
end
for i=1:n-1 %构造数据矩阵B
B(i,1)=c(i,:);
B(i,2)=e(i,:);
end
alpha=inv(B'*B)*B'*y; %计算参数 矩阵
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,:);
end
var(1,:)=ago(1,:)
for i=1:n %如改n为n+m-1,可预测后m-1个值
var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值
end
for i=1:n
error(i,:)=var(i,:)-x(i,:); %计算残差
end
c=std(error)/std(x) %调用统计工具箱的标准差函数计算后验差的比值c
结果为c,照我说的做吧,肯定能出来,我在matlab7.0上跑的
8. 用matlab编程灰色预测模型(1,1)
定义函数:
function pre = GM11(x)
%x,建模数据序列x = [x(1),x(2),...,x(n)]
% pre,由GM11模型得到的预测值,即由x估计出的x(n+1)
n = length(x);
x1 = cumsum(x);
z1 = (x1(1:n-1)+x1(2:n))/2;
Y = x(2:length(x))';
B = [-z1',ones(n-1,1)];
A = (B'*B)\B'*Y;%GM(1,1)模型的a,b参数组成的向量.
beta = A(2)/(1+.5*A(1));
alpha = A(1)/(1+.5*A(1));
%初始序列x0(k)模拟后的随时间t变化的序列
f = @(t)(beta-(alpha)*x(1))*exp(-(A(1)*(t-2)));
pre = f(n+1);
调用
x=[1879 2208 2948 2852 2774 2926 4680 3691];
GM11(x)
9. matlab 灰色预测 模型(1,1)
y=[56.16555.6549.52534.58514.4059.5258.9706.4754.110];
fori=1:9
j=1:i;
y1(i)=sum(y(j));
end
fori=2:9
y2(i-1)=-0.5*(y1(i-1)+y1(i));
end
b=ones(8,1);
b=[y2',b];
yy=y(2:end)';
a=(b'*b)^(-1)*b'*yy;
yy1(1)=y(1);
fori=2:11
yy1(i)=(y(1)-a(2)/a(1))*(exp(-a(1)*(i-1))-exp(-a(1)*(i-2)));
end
x=1980:1988;
x1=1980:1990;
plot(x1,yy1,'r')
holdon
plot(x,y,'b')
gridon
10. matlab运行灰色模型时出错
Maximum recursion limit of 500 reached.即:矩阵大小限制是500。
Use set(0,'RecursionLimit',N)to change the limit.即:可以从新设置这个限制,在函数头一句加上
set(0,'RecursionLimit',N)。N为你模型矩阵赋值。
Be aware that exceeding your available stack space can crash MATLAB and/or your computer.小心超过你计算机能给matlab分配的可用堆栈数量。