m0_61039351 2022-05-03 22:28 采纳率: 60%
浏览 72
已结题

这个matlab如何修改才能运行?

A=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
x0=[8.5 0.26 0.21 16.2 0.074 41 197 0.998 3.02 0.5 9.8
5.8 0.24 0.44 3.5 0.029 5 109 0.9913 3.53 0.43 11.7
9.1 0.59 0.38 1.6 0.066 34 182 0.9968 3.23 0.38 8.5
7.1 0.32 0.32 11 0.038 16 66 0.9937 3.24 0.4 11.5
6.9 0.36 0.34 4.2 0.018 57 119 0.9898 3.28 0.36 12.7
6.6 0.36 0.29 1.6 0.021 24 85 0.98965 3.41 0.61 12.4
8.2 0.37 0.36 1 0.034 17 93 0.9906 3.04 0.32 11.7
8.2 0.37 0.36 1 0.034 17 93 0.9906 3.04 0.32 11.7
4.8 0.21 0.21 10.2 0.037 17 112 0.99324 3.66 0.48 12.2
4.8 0.17 0.28 2.9 0.03 22 111 0.9902 3.38 0.34 11.3
4.8 0.26 0.23 10.6 0.034 23 111 0.99274 3.46 0.28 11.5
4.8 0.13 0.32 1.2 0.042 40 98 0.9898 3.42 0.64 11.8
4.7 0.455 0.18 1.9 0.036 33 106 0.98746 3.21 0.83 14
4.4 0.54 0.09 5.1 0.038 52 97 0.99022 3.41 0.4 12.2
14.2 0.27 0.49 1.1 0.037 33 156 0.992 3.15 0.54 11.1
10.7 0.22 0.56 8.2 0.044 37 181 0.998 2.87 0.68 9.5
10.7 0.22 0.56 8.2 0.044 37 181 0.998 2.87 0.68 9.5
10 0.2 0.39 1.4 0.05 19 152 0.994 3 0.42 10.4
10 0.23 0.27 14.1 0.033 45 166 0.9988 2.72 0.43 9.7
9.9 0.49 0.23 2.4 0.087 19 115 0.9948 2.77 0.44 9.4
];
[n,m]=size(x0);
AGO=cumsum(A);
T=0;
x1=zeros(n,m+T);

for k=2:m
Z(k)=(AGO(k)+AGO(k+1))/2; %Z(i)为xi(1)的紧邻均值生成序列
end
for i=1:n
for j=1:m
for k=1:j
x1(i,j)=x1(i,j)+x0(i,k);%原始数据一次累加,得到xi(1)
end
end
end
x11=x1(:,1:m);
X=x1(:,1:m)';%截取矩阵
Yn =A;%Yn为常数项向量
Yn(1)=[]; %从第二个数开始,即x(2),x(3)...
Yn=Yn';
%Yn=A(:,2:m)';
B=[-Z',X];
C=(B'*B)(B'Yn);%由公式建立GM(1,n)模型
a=C(1);
b=C(:,2:n+1);
F=[];
F(1)=A(1);
u=zeros(1,m);
for i=1:m
for j=1:n
u(i)=u(i)+(b(j)x11(j,i));
end
end
for k=2:m
F(k)=(A(1)-u(k-1)/a)/exp(a
(k-1))+u(k-1)/a;
end
G=[];
G(1)=A(1);
for k=2:m
G(k)=F(k)-F(k-1);%两者做差还原原序列,得到预测数据
end
t1=0:m;
t2=0:m;
plot(t1,A,'bo--');
hold on;
plot(t2,G,'r
-');

  • 写回答

2条回答 默认 最新

  • mozun2020 2022-05-04 15:29
    关注

    最好提供一下那个公式
    不知道你的需求,看着代码改的,已经运行通过了,但感觉不太对,希望对你有所启发

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %功能:预测
    %环境:Win7,Matlab2015b
    %Modi: C.S
    %时间:2022-05-04
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    close all;
    clear all 
    clc
    
    tic
    A=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
    x0=[8.5 0.26 0.21 16.2 0.074 41 197 0.998 3.02 0.5 9.8
    5.8 0.24 0.44 3.5 0.029 5 109 0.9913 3.53 0.43 11.7
    9.1 0.59 0.38 1.6 0.066 34 182 0.9968 3.23 0.38 8.5
    7.1 0.32 0.32 11 0.038 16 66 0.9937 3.24 0.4 11.5
    6.9 0.36 0.34 4.2 0.018 57 119 0.9898 3.28 0.36 12.7
    6.6 0.36 0.29 1.6 0.021 24 85 0.98965 3.41 0.61 12.4
    8.2 0.37 0.36 1 0.034 17 93 0.9906 3.04 0.32 11.7
    8.2 0.37 0.36 1 0.034 17 93 0.9906 3.04 0.32 11.7
    4.8 0.21 0.21 10.2 0.037 17 112 0.99324 3.66 0.48 12.2
    4.8 0.17 0.28 2.9 0.03 22 111 0.9902 3.38 0.34 11.3
    4.8 0.26 0.23 10.6 0.034 23 111 0.99274 3.46 0.28 11.5
    4.8 0.13 0.32 1.2 0.042 40 98 0.9898 3.42 0.64 11.8
    4.7 0.455 0.18 1.9 0.036 33 106 0.98746 3.21 0.83 14
    4.4 0.54 0.09 5.1 0.038 52 97 0.99022 3.41 0.4 12.2
    14.2 0.27 0.49 1.1 0.037 33 156 0.992 3.15 0.54 11.1
    10.7 0.22 0.56 8.2 0.044 37 181 0.998 2.87 0.68 9.5
    10.7 0.22 0.56 8.2 0.044 37 181 0.998 2.87 0.68 9.5
    10 0.2 0.39 1.4 0.05 19 152 0.994 3 0.42 10.4
    10 0.23 0.27 14.1 0.033 45 166 0.9988 2.72 0.43 9.7
    9.9 0.49 0.23 2.4 0.087 19 115 0.9948 2.77 0.44 9.4];
    
    [n,m]=size(x0);
    AGO=cumsum(A);
    T=0;
    x1=zeros(n,m+T);
    
    for k=2:m
       Z(k)=(AGO(k)+AGO(k+1))/2; %Z(i)为xi(1)的紧邻均值生成序列
    end
    for i=1:n
      for j=1:m
        for k=1:j
          x1(i,j)=x1(i,j)+x0(i,k);%原始数据一次累加,得到xi(1)
        end
      end
    end
    x11=x1(:,1:m);
    X=x1(:,1:m)';%截取矩阵
    Yn =A;%Yn为常数项向量
    Yn(1)=[]; %从第二个数开始,即x(2),x(3)...
    Yn =Yn(1:m);
    Yn=Yn';
    %Yn=A(:,2:m)';
    B=[-Z',X];
    C=(B'*B)*(B'*Yn);%由公式建立GM(1,n)模型
    a=C(1);
    b=C(1:n+1);
    F=[];
    F(1)=A(1);
    u=zeros(1,m);
    for i=1:m
       for j=1:n
          u(i)=u(i)+(b(j)*x11(j,i));
       end
    end
    for k=2:m
       F(k)=(A(1)-u(k-1)/a)/exp(A(k-1))+u(k-1)/a;
    end
    G=[];
    G(1)=A(1);
    for k=2:m
       G(k)=F(k)-F(k-1);%两者做差还原原序列,得到预测数据
    end
    t1=1:n;
    t2=1:m;
    plot(t1,A,'bo--');hold on;
    plot(t2,G,'r-');
    toc
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 赞助了问题酬金5元 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮