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 从键盘输入不管多少字符或者数组 输出的时候先提示输出再显示结果 输出的时候字符间间隔一个空格符
  • ¥30 频率分析法分析绘制奈奎斯特图、波特图
  • ¥15 弹出来一万个系统找不到指定的文件框框,怎么解决
  • ¥15 ADS生成的微带线为什么是蓝色空心的
  • ¥15 求一下解题思路,完全不懂
  • ¥15 tensorflow
  • ¥15 densenet网络结构中,特征以cat方式复用后是怎么进行误差回传的
  • ¥15 STM32G471芯片spi设置了8位,总是发送16位
  • ¥15 R语言并行计算beta-NTI中tree文件的类型
  • ¥15 如何解读marsbar导出的ROI数据?