精华内容
下载资源
问答
  • matlab——灰色预测

    2021-04-01 10:20:37
    通过离散随机数经过生成变为较有规律的生成数,进而直接转化成微分方程的模型。常用模型有GM(1,1)模型、GM(1,N)模型、Verhulst模型、GM(2,1)模型,DGM模型和灰色波形预测。 1. GM(1,1)模型 知识 例题 %...

    @数学建模

    数学建模——灰色预测

    灰色预测理论
    灰色理论认为信息不完全系统的行为现象尽管是朦胧的,数据是复杂的,但它具备一定的潜在规律,是有整体功能的。灰色预测就是从杂乱中寻找出规律,从而对系统进行预测。
    灰色模型(Grey Models,GM)
    通过离散随机数经过生成变为较有规律的生成数,进而直接转化成微分方程的模型。常用模型有GM(1,1)模型、GM(1,N)模型、Verhulst模型、GM(2,1)模型,DGM模型和灰色波形预测。

    1. GM(1,1)模型

    知识点

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    例题
    在这里插入图片描述
    在这里插入图片描述
    代码实现
    上机课作业,可人为输入数据与预测年数,并作出图来。
    在这里插入图片描述

    % GM(1,1)模型
    clc,clear
    x0 = input('请输入一个列向量数组:')
    k = input('请输入预测年数:')
    % x0 = [124761 125786 126743 127627 128453 129227 129988 130756 131448]'  输入数据 注意这里为列向量
    n = length(x0) %n=9
    lamda = x0(1:n-1)./x0(2:n) % 级比 ——8个数据
    range = minmax(lamda') %级比范围  
    if range(1,1) < exp(-2/(n+2)) | range(1,2)>exp(2/(n+2))
        error('级比没有落入灰色模型的范围内')
    else 
        %空行输出
        disp('         ');
        disp('可以用GM(1,1)建模')
    end
    x1 = cumsum(x0) %累加运算
    B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)]
    Y=x0(2:n); 
    u=inv(B'*B)*B'*Y   %拟合参数
    %上述语句可替换为 u=B\Y 【有点不太理解】
    % k=10;
    forecast1 = (x1(1)-u(2)./u(1)).*exp(-u(1).*([0:n-1+k]))+u(2)./u(1);
    %白化方程的离散响应
    exchange = diff(forecast1)%最后10个为预测的数据
    epsilon=x0(2:n)'-exchange(1:n-1)    %计算残差
    delta=abs(epsilon./x0(2:n)')  %计算相对误差 
    rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda'  %计算级比偏差值
    t1=1998:2006;
    t2=1999:2006+k;
    plot(t1,x0,'bo--');
    hold on
    plot(t2,exchange,'go-')
    hold on;
    title('预测结果');
    legend('真实值','预测值');
    
    

    2. GM(1,n)模型

    知识点
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    例题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码实现

    %GM(1,N)
    clc,clear
    x0 = [4383 7625 10500 11316 17818 
        83 131 180 195 306 
        146 212 233 259 404];  % 录入数据
    [m,n] = size(x0);
    x1_d = cumsum(x0,2);  %累加序列
    x11 = x1_d(1,:);  
    z11=0.5*(x11(1:end-1)+x11(2:end));%紧邻均值生成
    b = [-z11' x1_d(2,2:end)' x1_d(3,2:end)'];
    y = x0(1,2:end)';
    u = b\y   %参数矩阵
    %%引入条件
    x20 = [x0(2,:),400];
    x30 = [x0(3,:),500];
    x21 = cumsum(x20);x31 = cumsum(x30);
    for k = 0:length(x21)-1
        x1(k+1) = (x0(1,1)-u(2)/u(1)*x21(k+1)-u(3)/u(1)*x31(k+1)).*exp(-u(1)*k)+u(2)/u(1)*x21(k+1)+u(3)/u(1)*x31(k+1);
    end
    x10hat = [x1(1),diff(x1)];        %进行差分运算
    epsilon = x0(1,:) - x10hat(1:end-1);   %计算残差 
    delta = abs(epsilon./x0(1,:));   %计算相对误差  
    xhat = x10hat(end)  % 预测最终值
    

    3. 灰色Verhulst模型

    知识点
    在这里插入图片描述
    在这里插入图片描述
    例题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码实现

    %灰色verhulst
    clc,clear
    x0 = [2.119 2.070 2.442 2.485 2.507 2.496 2.640 2.710] % 输入数据
    n = length(x0)
    year = 0:n-1
    
    x1 = cumsum(x0) %累加运算
    for i = 2:n
        z1(i) = 0.5*(x1(i)+x1(i-1));    % 紧邻均值序列
    end
    z1
    B=[-z1(2:end)',z1(2:end)'.^2]
    Y=x0(2:end)';
    
    u=B\Y   %拟合参数 
    
    forecast1 = (u(1)*x0(1))./(u(2)*x0(1)+(u(1)-u(2)*x0(1))*exp(u(1).*([2:n])))
    exchange = diff(forecast1)
    epsilon=x0(2:n-1)-exchange    %计算残差
    delta=abs(epsilon./x0(2:n-1))  %计算相对误差 
    
    

    统一思路

    在这里插入图片描述

    4. 灰色波形预测

    知识点
    在这里插入图片描述
    在这里插入图片描述
    例题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    灰色模型的检验
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    5. GM(2,1)模型

    6. DGM模型

    7.案例分析

    展开全文
  • MATLAB图形图像处理

    热门讨论 2011-01-03 12:20:11
    第一章 MATLAB6.5 基础 1.1 MATLAB 语言介绍 ...17.3.1 预测编码 17.3.2 正交变换编码 17.3.3 MATLAB 实现余弦变换压缩 17.3.4 MATLAB 实现小波变换压缩 附录 A 对象属性 附录 B 图像工具箱函数
  • 两者最根本的共同都是基于现有数据进行预测、推演,比如根据现有的天文观测数据预测天体位置。插值问题是数学史上的经典问题,拉格朗日、高斯、牛顿等著名数学家均有所研究。插值的定义是:在离散数据的基础上补插...

    本篇算是开始数据处理了。首先明确俩概念:插值和拟合。两者最根本的共同点都是基于现有数据进行预测、推演,比如根据现有的天文观测数据预测天体位置。插值问题是数学史上的经典问题,拉格朗日、高斯、牛顿等著名数学家均有所研究。

    插值的定义是:

    在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。

    插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

    %图像处理时也有“插值”:用来填充图像变换时像素之间的空隙。

    说实话一开始我并没想通这个插值中的“插”是怎么回事,interpolation,前边inter是个插,后边polation是个“极”,在电线杆子间搭电线可不太妙……安利一个形象的起搏:生长着的树叶。cda42a31d2ee5d03f54a7086a86986a2.png

    叶脉中的主叶脉就好比是自变量轴,那些一级支脉就好比是离散着的数据,它们描摹出一个大致的连续边缘,这个边缘就好比是插补进去的的连续函数,假设在叶子的继续生长过程中,边缘是相似的成比例放大,则可以根据叶子的边缘预测下一个叶脉的相对长短。3ac73d3bce65b913253bff7f2e440747.png

    我们高中时就用过拟合,比如验证牛顿第二定律的描点连线,拟合得到的函数表达式即与牛顿第二定律相一致,不必经过每个数据点,因为微扰是常态,诚如伽利略所言“懂得忽略什么与懂得重视什么同样重要”。22eca46018ba9d7a45cf9b8b2bca7cc9.png

    MATLAB有插值库函数interp,语法如下:663f151df901fa3fa93e5a572878170d.png

    讲义上给出了预测体温的示例:

    hours=1:12;

    temps=[5 8 9 15 25 29 31 30 22 25 27 24];

    h=1:0.1:12;

    t=interp1(hours,temps,h,'spline');

    plot(hours,temps,'+',h,t,hours,temps,'r:')

    % 作图,原散点数据用+标记

    xlabel('Hour'),ylabel('Degrees Celsius')

    运行后:eac0a42f3408fb444ae6030cf76a18ae.png

    如图,曲线经过了每个数据点。

    interp2就是2维的插值,即已知数据点(x,y)组成规则的矩阵(或称之为栅格),可使用meshgrid生成。另外,我觉得优先级更高的是griddata函数,它不要求数据规则排列,∴对随机无规律数据进行插值具有很好的效果。

    话说我觉得拟合优先级更高,因为建模是建个规律性的玩意,描述趋势或规律拟合比插值强

    拟合的时候是默认样本中已经包含噪声,因此不追求拟合曲线通过每一个数据点,衡量拟合数据的标准则是整体数据拟合的误差最小。一般情况下,MATLAB的曲线拟合方法用的是“最小方差”函数,比如polyfit函数。

    ployfit(x,y,n)是找到次数为n的多项式系数,对于数据集合{(xi,yi)},满足最小平方差,讲义示例

    x0=[1949 1954 1959 1964 1969 1974 1979 1984 1989 1994];%年份

    y0=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];%对应年份人口

    a=polyfit(x0,y0,1); % 线性拟合

    x1=[1949:0.5:1994];

    y1=polyval(a,x1);% 多项式拟合即:y1 = a(1)*x1 + a(2);

    y1_2005=polyval(a,2005)

    b=polyfit(x0,log(y0),1); % 指数函数拟合

    y2=exp(b(2))*exp(b(1)*x1);

    y2_2005=exp(b(2))*exp(b(1)*2005)

    plot(x0,y0,'*')

    hold on

    plot(x1,y1,'--r')

    hold on

    plot(x1,y2,'-k')

    legend('原数据散点图','线性拟合曲线','指数拟合曲线')

    为啥最小二乘法最常见呢?我的直觉是能量(振幅的平方)最小作用原理,噪声就是振动,没有噪声就没有振动没有误差,则是完全准确的拟合。至于证明,我现在不会也不想会~

    言归正传,我觉得线性拟合里边多元线性拟合的优先级高,建模肯定得建不少变量,讲义示例

    food=[1.5 2 3 4.5 7.5 9.1 10.5 12];

    n=length(food);

    x=[ones(n,1), food'];

    y=[5.6 6.6 7.2 7.8 10.1 10.8 13.5 16.5]';

    [b,bint,r,rint,stat] = regress(y,x,0.05)

    %regress函数语法:c40c33a461fd1735928d166c1178bf20.png

    然后是非线性拟合:非线性曲线拟合是已知输入向量xdata、输出向量ydata,而且还知道输入与输出的函数关系为ydata=F(x,xdata),但不清楚系数向量x,MATLAB中可以用函数curvefit。有个问题是非线性的方法多了去了,多到系统说用户你自己写个自定义非线性处理函数吧~30d11408326317cf2c88afa01f084527.png

    这里的‘fun’就是自定义的函数e60804e95eea907a85ad94d2d62522fa.png

    这让主程序更简洁一些:

    %%%%%%%%%%%%%%%%函数单独存为m文件%%%%%%%%%%%%%%%%%%

    function f=curvefun2(x)

    tdata=[100:100:1000]';   cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59]';

    f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata;

    end

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%主程序:

    x0=[0.2,0.05,0.05]';

    [x,resnorm,residua]=lsqnonlin('curvefun2',x0)

    讲义上还给了适用面更广的通用的非线性拟合函数fa5d9a840d251ad69ec71c08be7baad3.png这里的‘model’也是自定义的‘fun’

    我还想提一嘴参数估计函数,参数估计包括点估计和区间估计,我们在概率论学过不少。MATLAB统计工具箱提供了很多与参数估计相关的函数,例如计算待估参数及其置信区间、估计服从不同分布的函数的参数。最常用的是高斯/正态分布进行参数估计——

    [muhat,sigmahat,muci,sigmaci]=normfit(x),muhat是μ带帽^,sigimahat是σ带帽^,muci是μ的95%置信区间,sigmaci是σ的95%置信区间。

    [muhat,sigmahat,muci,sigmaci]=normfit(x,alpha)进行参数估计并计算100(1-alpha)%置信区间。

    其他的分布如β分布、泊松分布、二项分布、指数分布、伽马分布等也输出一个分布的参数估计表的向量。

    下边是我觉得优先级最高的操作:MATLAB曲线拟合工具箱。af57031c92225552aaf809a96a0275dd.png

    不过我的cftool和讲义上的截图界面不一太一样,功能应该一样,5416ffb4e77fe6a3aadf3eb50d1aba94.pngA=rand(4,4)、线性拟合

    文件按钮里有我们想要的操作,比如封装成函数、保存、用figure打印图形等。

    展开全文
  • VC++ matlab图像处理

    2013-09-15 15:17:54
    第一章 MATLAB6.5 基础 1.1 MATLAB 语言介绍 ...17.3.1 预测编码 17.3.2 正交变换编码 17.3.3 MATLAB 实现余弦变换压缩 17.3.4 MATLAB 实现小波变换压缩 附录 A 对象属性 附录 B 图像工具箱函数
  • MATLAB常用算法

    热门讨论 2010-04-05 10:34:28
    各种数学算法的MATLAB实现 第4章: 插值 函数名 功能 Language 求已知数据的拉格朗日插值多项式 Atken 求已知数据的艾特肯插值多项式 Newton 求已知数据的均差形式的牛顿插值多项式 Newtonforward 求已知数据...
  • 12.2.5神经网络时间序列预测 12.2.6神经网络函数命令 12.3神经网络与Simulink 12.3.1神经网络Simulink模块 12.3.2神经网络Simulink建模 12.4自定义神经网络 12.4.1自定义神经网络函数命令 12.4.2神经网络数据管理GUI...
  • Matlab数据插值-内插、外插

    万次阅读 2013-10-04 18:50:55
    插值就是已知一组离散的数据点集,在集合内部某两个之间预测函数值的方法。 一、一维插值 插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各,并用此函数表达式预测之间任意位置上的...

    插值就是已知一组离散的数据点集,在集合内部某两个点之间预测函数值的方法。


    一、一维插值
    插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各点,并用此函数表达式预测两点之间任意位置上的函数值。

    插值运算在信号处理和图像处理领域应用十分广泛。
    1.一维插值函数的使用

    若已知的数据集是平面上的一组离散点集(x,y),则其相应的插值就是一维插值。MATLAB中一维插值函数是interp1。

    y=interp([x,]y,xi,[method],['extrap'],[extrapval]),[]代表可选。

    method:'nearest','linear','spline','pchip','cubic','v5cubic'。

    2.内插运算与外插运算
    (1)只对已知数据点集内部的点进行的插值运算称为内插,可比较准确的估测插值点上的函数值。

    (2)当插值点落在已知数据集的外部时的插值称为外插,要估计外插函数值很难。

    MATLAB对已知数据集外部点上函数值的预测都返回NaN,但可通过为interp1函数添加'extrap'参数指明也用于外插。

    MATLAB的外插结果偏差较大。
     

    二、二维插值    已知点集在三维空间中的点的插值就二维插值问题,在图像处理中有广泛的应用。

    二维插值函数是interp2,用法与一维插值函数interp1类似。

    ZI=interp2(X, Y, Z, XI, YI, method, extrapval):在已知的(X,Y,Z)三维栅格点数据上,在(XI, YI)这些点上用method指定的方法估计函数值,外插使用'extrapval'。


    二维插值中已知数据点集(X, Y)必须是栅格格式,一般用meshgrid函数产生。interp2要求(X, Y)必须是严格单调的并且是等间距的,如果(X, Y)不是等间距的,会将其变换为等间距形式,如果已知是等间距的,可在method参数前加星号,如:'*cubic'。
     

    三、多维插值1.interp3    三维插值,VI=interp3(X,Y, Z, V, XI, YI, ZI, method),用法同二维插值interp2。
    2.n维插值VI=interpn(X1, X2, X3…, V, Y1, Y2, Y3,…, method),用法同二维插值interp2。
    3.ndgrid
    产生n维空间上的栅格。

    [X1, X2, X3, …]=ndgrid(x1, x2, x3, …)

    展开全文
  • GM(1,1)模型是使用原始的离散非负数据列,通过一次累加生成削弱随机性、较有规律的离散数据列,然后通过建立微分方程模型,得到在离散点处的解经过累减生成的原始数据的近似估计值,从而预测原始数据的后续发展 ...

    参考资料:
    清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学

    概念

    GM(1,1)模型是使用原始的离散非负数据列,通过一次累加生成削弱随机性、较有规律的离散数据列,然后通过建立微分方程模型,得到在离散点处的解经过累减生成的原始数据的近似估计值,从而预测原始数据的后续发展

    准指数规律的检验

    在这里插入图片描述

    原理

    在这里插入图片描述

    求解部分

    在这里插入图片描述

    解析解

    在这里插入图片描述

    GM(1,1)模型的评价
    残差检验

    在这里插入图片描述

    级比偏差检验

    在这里插入图片描述
    结合具体预测场景来判断临界值,一般认为<0.1则说明拟合效果较好,<0.2则说明拟合效果达到一般要求,

    代码部分

    主函数
    %%  输入数据
    clear;clc
    Time=input('请输入数据时期:');
    Data=input('请输入数据:');
    if size(Time,1)==1
        Time=Time';
    end
    if size(Data,1)==1
        Data=Data';
    end
    n=size(Time,1);
    Model={'全数据GM(1,1)','新信息GM(1,1)','新陈代谢(GM1,1)'};
    GraphCount=1;   %   统计需要绘制的图的个数
    %判断数据是否存在负值或小于3期
    if sum(Data<0)>0
        error('数据存在负值,程序终止');
    end
    if n<4
        error('数据过少,无法进行灰色预测');
    end
    if n>10
        error('数据过多,无法进行灰色预测');
    end
    
    %画出原始数据的时间序列图
    fprintf('\n');
    disp('------------------------------------------------------------');
    disp('下面开始绘制原始数据的时间序列图');
    LabelX=input('请输入X轴标签:','s');
    LabelY=input('请输入Y轴标签:','s');
    figure(GraphCount);
    GraphCount=GraphCount+1;
    plot(Time,Data,'o-');
    grid on;
    set(gca,'xtick',Time(1:1:end));
    xlabel(LabelX);ylabel(LabelY);
    fprintf('\n');
    disp('------------------------------------------------------------');
    
    %%  准指数规律检验
    AccData=cumsum(Data);
    Smooth=Data(2:end,1)./AccData(1:end-1,1);
    
    %   统计ρ(k)∈(0,0.5)的占比(指标1)
    count=0;
    for i=1:size(Smooth,1)
        if Smooth(i,1)<0.5
            count=count+1;
        end
    end
    SmoPer1=count/size(Smooth,1)*100;
    disp(['指标1:光滑比小于0.5的数据占比为',num2str(SmoPer1),'%'])
    
    %   统计ρ(k)∈(0,0.5)的占比(指标2)
    count=0;
    for i=3:size(Smooth,1)
        if Smooth(i,1)<0.5
            count=count+1;
        end
    end
    SmoPer2=count/(size(Smooth,1)-2)*100;
    disp(['指标2:去除前两个时期后,光滑比小于0.5的数据占比为',num2str(SmoPer2),'%'])
    Judge=input('该数据是否通过准指数规律检验?请判断(输入1为通过,输入0为不通过):');
    fprintf('\n');
    disp('------------------------------------------------------------');
    if Judge==0
        error('数据未通过准指数规律检验,无法进行灰色预测,程序终止');
    end
    
    fprintf('\n');
    disp('------------------------------------------------------------');
    if n==4
        N=input('请输入要预测的期数:');
        [Result_Original,RelaResi_Original,EtaOriginal]=Original(Data,N);
        [Result_New]=New(Data,N);
        [Result_Metabolism,RelaResi_Metabolism,EtaMetabolism]=Metabolism(Data,N);
        FinalResult=(Result_Original+Result_New+Result_Metabolism)/3;
    else
        disp('由于数据过多,故取部分数据作为试验组,其余数据为训练组,以提高模型精度。');
        if n>7
            TrainNum=3;
        else
            TrainNum=2;
        end
        TrainData=Data(1:end-TrainNum,1);
        [Result_Original,RelaResi_Original,EtaOriginal,DataHat]=Original(TrainData,TrainNum);
        [Result_New]=New(TrainData,TrainNum);
        [Result_Metabolism]=Metabolism(TrainData,TrainNum);
        %   计算SSE
        SSE1=sum(Data(end-TrainNum+1:end)-Result_Original);
        SSE2=sum(Data(end-TrainNum+1:end)-Result_New);
        SSE3=sum(Data(end-TrainNum+1:end)-Result_Metabolism);
        %   选取误差最小的模型
        if SSE1<SSE2
            if SSE1<SSE3
                ModelType=1;
            else
                ModelType=3;
            end
        else
            if SSE2>SSE3
                ModelType=3;
            else
                ModelType=2;
            end
        end
        string=strcat('经计算,',Model(1,ModelType),'精度最高,故以此模型来预测未来数据');
        fprintf('\n');
        disp('------------------------------------------------------------');
        disp(char(string))
        
        %   预测结果
        N=input('请输入要预测的期数:');
        fprintf('\n\n');
        [FinalResult,RelaResi,Eta,DataHat]=Original(Data,N);
        if ModelType==2
            FinalResult=New(Data,N);
        else
            FinalResult=Metabolism(Data,N);
        end
        disp(['往后预测',num2str(N),'的结果为:']);
        disp(mat2str(FinalResult));
        
        %   残差检验
        AverageRelaResi=mean(RelaResi)*100;
        disp(['该模型的平均相对残差为',num2str(AverageRelaResi),'%']);
        if AverageRelaResi<10
            disp('经残差检验,该模型的预测精度较高');
        elseif AverageRelaResi<20
            disp('经残差检验,该模型的预测精度一般');
        else
            disp('经残差检验,该模型的预测精度较低,建议更换其他模型');
        end
        
        %   级比偏差检验
        AverageEta=mean(Eta)*100;
        disp(['该模型的平均级比偏差为',num2str(AverageEta),'%']);
        if AverageEta<10
            disp('经级比偏差检验,该模型的预测精度较高');
        elseif AverageEta<20
            disp('经级比偏差检验,该模型的预测精度一般');
        else
            disp('经级比偏差检验,该模型的预测精度较低,建议更换其他模型');
        end
        
        %   绘制最终数据图
        figure(GraphCount)
        plot(Time,Data,'-o',  Time,DataHat,'-*m',  Time(end)+1:Time(end)+N,FinalResult,'-*b' );
        grid on;
        hold on;
        plot([Time(end),Time(end)+1],[Data(end),FinalResult(1)],'-*b')
        legend('原始数据','拟合数据','预测数据') 
        set(gca,'xtick',[Time(1,1):1:Time(end,1)+N])
        xlabel(LabelX);  ylabel(LabelY);
    end
                
                
    
    全数据模型
    function [Result,RelativeResidual,Eta,DataHat]=Original(Data,N)
    n=size(Data,1);
    AccData=cumsum(Data);
    Z=(AccData(1:end-1,1)+AccData(2:end,1))/2;
    Data1=Data(2:end,1);
    %%   计算灰作用量及发展系数
    k=((n-1)*sum(Data1.*Z)-sum(Z)*sum(Data1))/((n-1)*sum(Z.*Z)-(sum(Z)*sum(Z)));
    b=(sum(Z.*Z)*sum(Data1)-sum(Z)*sum(Z.*Data1))/((n-1)*sum(Z.*Z)-sum(Z)*sum(Z));
    a=-k;
    
    %%   预测
    Result=zeros(N,1);
    DataHat=zeros(n,1);
    DataHat(1,1)=Data(1,1);
    for i=2:n-1
        DataHat(i,1)=(1-exp(a))*(Data(1,1)-b/a)*exp(-a*(i-1));
    end
    for i=1:N
        Result(i,1)=(1-exp(a))*(Data(1,1)-b/a)*exp(-a*(n+i-1));
    end
    
    %%   计算残差及级比偏差
    %   相对残差
    RelativeResidual=(Data(2:end,1)-DataHat(2:end,1))./Data(2:end,1);
    %   级比偏差
    Temp=Data(2:end,1)./Data(1:end-1,1);
    Eta=abs(1-(1-0.5*a)/(1+0.5*a)*(1./Temp));
    end
    
    新信息模型
    function [Result]=New(Data,N)
    Result=zeros(N,1);
    for i=1:N
        Result(i,1)=Original(Data,1);
        Data=[Data;Result(i,1)];
    end
    end
    

    此函数中用到了全数据模型中的求解步骤

    新陈代谢模型
    function [Result]=Metabolism(Data,N)
    Length=length(Data);
    Result=zeros(N,1);
    for i=1:N
        Result(i,1)=Original(Data,1);
        for j=1:Length-1
            Data(j,1)=Data(j+1,1);
        end
        Data(Length,1)=Original(Data,1);
    end
    end
    

    此函数中用到了全数据模型中的求解步骤

    展开全文
  • 6.2.3线性预测方法 6.3频域建模 6.3.1模拟滤波器的频域建模 6.3.2数字滤波器的频域建模 第7章通信系统设计的MATLAB实现 7.1设计通信系统的发射机 7.2设计通信系统的接收机 7.3通信系统的MATLAB实现 第8章...
  • 第一章 MATLAB6.5 基础 1.1 MATLAB 语言介绍 ...17.3.1 预测编码 17.3.2 正交变换编码 17.3.3 MATLAB 实现余弦变换压缩 17.3.4 MATLAB 实现小波变换压缩 附录 A 对象属性 附录 B 图像工具箱函数
  • 第1章控制系统案例的MATLAB实现 1.1MATLAB/Simulink在时域分析中的应用 1.2MATLAB在积分中的应用 1.3MATLAB在微分方程中的应用 1.4MATLAB/Simulink在根轨迹分析中的应用 1.5MATLAB在频域响应中的应用 1.6...
  • 第一章 MATLAB6.5 基础 1.1 MATLAB 语言介绍 ...17.3.1 预测编码 17.3.2 正交变换编码 17.3.3 MATLAB 实现余弦变换压缩 17.3.4 MATLAB 实现小波变换压缩 附录 A 对象属性 附录 B 图像工具箱函数
  • 而我们的目的就是找到这些规则来进行预测未来系统的发展。(通过计算机的计算,来模拟一个复杂的自然过程) 元胞自动机是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟...
  • 也就是说,通常实验中收集的数据中数据的状态是以离散形式呈现的,这不利于系统的分析和处理。我们想找到一种准确拟合数据的方法,并得到相应曲线功能参数的合理预测。 本文将探讨多类算法在具有明显特征性数据...
  • MATLAB语言常用算法程序集 书中4-17章代码,都是一些常用的程序 第4章: 插值 函数名 功能 Language 求已知数据的拉格朗日插值多项式 Atken 求已知数据的艾特肯插值多项式 Newton 求已知数据的均差形式的牛顿...
  • 图形图像处理源程序-matlab6.5图形图像处理源程序.rar ...17.3.1 预测编码 17.3.2 正交变换编码 17.3.3 MATLAB 实现余弦变换压缩 17.3.4 MATLAB 实现小波变换压缩 附录 A 对象属性 附录 B 图像工具箱函数
  • census :预测世界人口 spline2d :样条拟合 ◆ 稀疏矩阵 sshow sparsity :降阶 ◆ 游戏 xpbombs :仿Windows系统自带的扫雷游戏 life :生命发展游戏 ◆ 三维效果图 klein1 :肤色三维效果图 tori4 :四...
  • matlab 神经网络原理与实例精解 陈明著,留的是百度网盘,高清PDF,文件大于60MB,全书齐 第 1 篇 入门篇 第 1 章 神经网络概述( 教学视频:10 分钟)/2 1.1 人工神经网络简介/2 1.2 神经网络的特点及应用/3 1.2.1 ...
  • Linear Regression解决的是连续的预测和拟合问题,而Logistic Regression解决的是离散的分类问题。两种方式,但本质殊途同归,两者都可以算是指数函数族的特例。在分类问题中,y取值在{0,1}之间,因此,上述的Liear ...
  • 而我们的目的就是找到这些规则来进行预测未来系统的发展。(通过计算机的计算,来模拟一个复杂的自然过程) 元胞自动机是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟...
  • 而我们的目的就是找到这些规则来进行预测未来系统的发展。(通过计算机的计算,来模拟一个复杂的自然过程) 元胞自动机是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟...
  • 25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊) 神经网络的学习规则又称神经网络的训练算法,用来计算更新 神经网络的权值和阈值。学习规则有两大类别:有导师学习和无导师学习。在有...
  •  ③曲线拟合、离散模型、多项式拟合 ①赛题及赛题解析  ②优秀论文2篇5 _& _6 s% { |! j, C5 z  ③线性规划、多目标非线性规划 ①赛题及赛题解析  ②优秀论文2篇  ③线性规划 ①赛题及赛题解析  ②线性规划、...
  • 3.3 离散信号与MATLAB 140 3.4 习题 142 第4章 Haar小波分析 147 4.1 小波的由来 147 4.2 Haar小波 148 4.3 Haar分解和重构算法 157 4.4 小结 168 4.5 习题 170 第5章 多分辨率分析 173 5.1 多分辨率框架 173 5.2 ...
  • 根据系统的Jacobian矩阵特征值对系统进行了稳定性分析,揭示了系统产生振荡现象的原因是系统发生了Hopf分岔,并且通过分析Jacobian矩阵特征值的变化情况对系统的分岔作出准确预测。结合系统的特征方程给出了一种...
  • 小波与傅里叶分析基础 作 者: (美)Albert Boggess, Francis J.Narcowich 译 者:芮国胜 康健等 出版社: 电子工业出版社 出版时间: 2004-1-1 许多关于小波的文章和参考书籍均要求读者具有...附录B MATLAB程序

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

matlab离散点预测

matlab 订阅