• 时序预测 | MATLAB实现ICEEMDAN-IMPA-GRU时间序列预测


    时序预测 | MATLAB实现ICEEMDAN-IMPA-GRU时间序列预测

    预测效果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    基本介绍

    ICEEMDAN-IMPA-GRU功率/风速预测 基于改进的自适应经验模态分解+改进海洋捕食者算法+门控循环单元时间序列预测~组合预测
    1.分解时避免了传统经验模态分解的一些固有缺陷,效果更佳,并通过改进的海洋捕食者算法对GRU四个参数进行寻优,最后对每个分量建立GRU模型进行预测后叠加集成,全新组合预测,出图多且精美~
    2.改进点如下:
    通过一个新的自适应参数来控制捕食者移动的步长,并使用非线性参数作为控制参数来平衡NMPA的探索和开发阶段,有效提高其搜索精度与收敛速度。
    直接替换excel数据即可用 适合新手小白
    附赠案例数据 可直接运行

    程序设计

    • 完整程序和数据下载方式私信博主回复:MATLAB实现ICEEMDAN-IMPA-GRU时间序列预测
    function [modes,its]=iceemdan(x,Nstd,NR,MaxIter,SNRFlag)
    x=x(:)';
    desvio_x=std(x);
    x=x/desvio_x;
    
    modes=zeros(size(x));
    temp=zeros(size(x));
    aux=zeros(size(x));
    iter=zeros(NR,round(log2(length(x))+5));
    
    for i=1:NR
        white_noise{i}=randn(size(x));%creates the noise realizations
    end;
    
    for i=1:NR
        modes_white_noise{i}=emd(white_noise{i});%calculates the modes of white gaussian noise
    end;
    
    for i=1:NR %calculates the first mode
        xi=x+Nstd*modes_white_noise{i}(1,:)/std(modes_white_noise{i}(1,:));
        [temp, o, it]=emd(xi,'MAXMODES',1,'MAXITERATIONS',MaxIter);
        temp=temp(1,:);
        aux=aux+(xi-temp)/NR;
        iter(i,1)=it;
    end;
    
    modes= x-aux; %saves the first mode
    medias = aux;
    k=1;
    aux=zeros(size(x));
    es_imf = min(size(emd(medias(end,:),'MAXMODES',1,'MAXITERATIONS',MaxIter)));
    
    while es_imf>1 %calculates the rest of the modes
        for i=1:NR
            tamanio=size(modes_white_noise{i});
            if tamanio(1)>=k+1
                noise=modes_white_noise{i}(k+1,:);
                if SNRFlag == 2
                    noise=noise/std(noise); %adjust the std of the noise
                end;
                noise=Nstd*noise;
                try
                    [temp,o,it]=emd(medias(end,:)+std(medias(end,:))*noise,'MAXMODES',1,'MAXITERATIONS',MaxIter);
                catch    
                    it=0; disp('catch 1 '); disp(num2str(k))
                    temp=emd(medias(end,:)+std(medias(end,:))*noise,'MAXMODES',1,'MAXITERATIONS',MaxIter);
                end;
                temp=temp(end,:);
            else
                try
                    [temp, o, it]=emd(medias(end,:),'MAXMODES',1,'MAXITERATIONS',MaxIter);
                catch
                    temp=emd(medias(end,:),'MAXMODES',1,'MAXITERATIONS',MaxIter);
                    it=0; disp('catch 2 sin ruido')
                end;
                temp=temp(end,:);
            end;
            aux=aux+temp/NR;
        iter(i,k+1)=it;    
        end;
        modes=[modes;medias(end,:)-aux];
        medias = [medias;aux];
        aux=zeros(size(x));
    %--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    参考资料

    [1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
    [2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502

  • 相关阅读:
    第7天:Python的web自动化学习(七)项目实战——制作一个简单的待办事项管理器
    python+django体质测试数据分析及可视化设计
    VulnHub — Me-and-My-Girlfriend-1
    使用Java调用Yolo模型的准备工作与输入输出
    react面试题总结一波,以备不时之需
    Fourier变换的微分性质及其证明
    ElasticSerach7.15.2插件中文分词器(IK+pinyin)
    前端研习录(12)——动画效果讲解及示例说明
    Scrapy:Python中高效的网络爬虫框架
    运营商认证API在Java、Python、PHP中的使用教程
  • 原文地址:https://blog.csdn.net/kjm13182345320/article/details/133636543