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 用lstm来预测股票价格
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上