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日

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错