![]() |
GM(1,1)
我写了一个GM(1,1)的求解函数,但是GM(1,1)只是计算行向量或是列向量,我现在想用这个函数计算一个矩阵中没一行的值,然后把计算出来的结果放到一个列向量里面,计算GM(1,1)函数测试通过,但是在记录到列向量的时候出错,请大家帮帮忙,谢谢!
代码: gm.m function gm(x0) n=length(x0); %由数列x0生成数列x1; s=0; for i=1:n s=s+x0(i); x1(i)=s; end %由数列x1生成矩阵B和Y; for i=1:(n-1); Q(i)=-(x1(i)+x1(i+1))/2; end M=ones(n-1,1); B=[Q' M]; for i=1:(n-1); C(i)=x0(i+1); end Y=C'; beta=inv(B'*B)*B'*Y; %计算出a和u; a=beta(1); u=beta(2); (x0(1)-u/a)*(1-exp(a))*exp(-a*3) test.m C=[0.8 0.9 0.6; 1.0 0.9 0.9;1 2 3]; f=zeros(3,1); for a = 1: 3; % eval(['X',num2str(a),'=','C(a,:)']); % eval(['x',num2str(a),'=','gm(C(a,:))']) f(:,1)= gm(C(a,:)); end |
回复: GM(1,1)
function [out]=gm(x0)
n=length(x0); %由数列x0生成数列x1; s=0; for i=1:n s=s+x0(i); x1(i)=s; end %由数列x1生成矩阵B和Y; for i=1:(n-1); Q(i)=-(x1(i)+x1(i+1))/2; end M=ones(n-1,1); B=[Q' M]; for i=1:(n-1); C(i)=x0(i+1); end Y=C'; beta=inv(B'*B)*B'*Y; %计算出a和u; a=beta(1); u=beta(2); out=(x0(1)-u/a)*(1-exp(a))*exp(-a*3) 这是我写的一个GM11的函数程序,定义了一个输出。你的函数没有输出。 function [pre]=fun_GM11(X0,pre_num) X1=cumsum(X0) n=length(X0); G(:,1)=-(X1(2:n)+X1(1:n-1))/2; G(:,2)=ones(n-1,1); Y(:,1)=X0(2:n); pre=Y; a1=inv(G'*G)*G'*Y; a=a1(1); u=a1(2); X_pre(1)=X0(1); for k=1:n-1+pre_num X_pre(k+1)=(1-exp(a))*(X0(1)-u/a)*exp(-a*k); end pre=X_pre; |
回复: GM(1,1)
希望能有帮助。
|
所有时间均为北京时间。现在的时间是 13:19。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.