|
|
#1 |
|
初级会员
注册日期: 2008-11-07
年龄: 28
帖子: 1
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0 ![]() |
我写了一个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 |
|
|
|
|
|
#2 |
|
初级会员
注册日期: 2008-04-17
年龄: 29
帖子: 7
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0 ![]() |
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; |
|
|
|
|
|
#3 |
|
初级会员
注册日期: 2008-04-17
年龄: 29
帖子: 7
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0 ![]() |
希望能有帮助。
|
|
|
|
![]() |
| 书签 |
| 主题工具 | |
| 显示模式 | |
|
|
相似的主题
|
||||
| 主题 | 主题作者 | 版面 | 回复 | 最后发表 |
| Matlab命令 | wind_1130 | MATLAB论坛 | 1 | 2009-02-07 02:11 PM |
| 请教constr函数问题 | nibabashiwo | MATLAB论坛 | 0 | 2009-01-14 02:25 PM |
| [求助]看看我的matlab程序错在哪里 | huanghuan | MATLAB论坛 | 1 | 2008-11-16 06:34 PM |
| scope显示问题(失真) | zhc1007 | MATLAB论坛 | 0 | 2008-11-16 03:32 PM |
| 怎样用窗函数截断IIR滤波器脉冲响应 | wangzhuzhen | MATLAB论坛 | 0 | 2008-11-14 02:53 PM |