精华内容
下载资源
问答
  • 空间平滑算法处理相干源, 两种实现方案
  • Visual c++数字图像处理高斯平滑算法源码
  • 自调整平滑区间粒子滤波平滑算法
  • 载波相位平滑伪距,针对伪距的异常情况,利用载波相位进行平滑处理
  • 基于空间平滑的music源程序,包括前向平滑,后向平滑和双向平滑
  • 一次/三次指数平滑预测算法,输入向量输出原图像,预测图像
  • SG平滑算法(又称多项式平滑算法)

    万次阅读 多人点赞 2018-12-24 22:36:05
    今天是平安夜,闲来无事,那就来写一下SG平滑算法吧! SG平滑算法是由Savizkg和Golag提出来的。基于最小二乘原理的多项式平滑算法,也称卷积平滑。为啥叫多项式平滑呢?且看下去。 下面使用五点平滑算法来说明平滑...

    今天是平安夜,闲来无事,那就来写一下SG平滑算法吧!

    SG平滑算法是由Savizkg和Golag提出来的。基于最小二乘原理的多项式平滑算法,也称卷积平滑。为啥叫多项式平滑呢?且看下去。

     下面使用五点平滑算法来说明平滑过程

    原理很简单如图:

    把光谱一段区间的等波长间隔的5个点记为X集合,多项式平滑就是利用在波长点为Xm-2,Xm-1,Xm,Xm+1,Xm+2的数据的多项式拟合值来取代Xm,,然后依次移动,直到把光谱遍历完。

     首先推五点三次平滑公式,m=2,k= 3

    由上式可得

    再由公式计算B矩阵得

     

     

     

    所以5个平滑公式如图

     

     其他什么7点3次,9点3次,同理可以推导求解。下次补上C++代码,+——+溜了   欢迎留言交流。。

    参考文献:(1)https://blog.csdn.net/qq_20823641/article/details/51537461

                      

    展开全文
  • 图像平滑处理,适用于图像处理,是图像处理的基础内容,适合初学者。
  • 图像平滑处理,适用于图像处理,是图像处理的基础内容,适合初学者。
  • 指数平滑法——趋势平滑预测方法

    万次阅读 2019-07-09 09:08:09
    原文地址:... 指数平滑法(Exponential Smoothing,ES) 目录 1什么是指数平滑法 2指数平滑法的基本公式 3指数平滑的预测公式 3.1(一) 一次指数平滑预测 ...

    原文地址:https://wiki.mbalib.com/wiki/%E6%8C%87%E6%95%B0%E5%B9%B3%E6%BB%91%E6%B3%95 

    指数平滑法(Exponential Smoothing,ES)

    目录

     

    什么是指数平滑法

      指数平滑法是布朗(Robert G..Brown)所提出,布朗(Robert G..Brown)认为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续到最近的未来,所以将较大的权数放在最近的资料。

      指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。

      也就是说指数平滑法是在移动平均法基础上发展起来的一种时间序列分析预测法,它是通过计算指数平滑值,配合一定的时间序列预测模型对现象的未来进行预测。其原理是任一期的指数平滑值都是本期实际观察值与前一期指数平滑值的加权平均。

    指数平滑法的基本公式

      指数平滑法的基本公式是:S_t=a\cdot y_t+(1-a)S_{t-1} 式中,

    • St--时间t的平滑值;
    • yt--时间t的实际值;
    • St − 1--时间t-1的平滑值;
    • a--平滑常数,其取值范围为[0,1];

      由该公式可知:

      1.Styt和 St − 1的加权算数平均数,随着a取值的大小变化,决定yt和 St − 1对St的影响程度,当a取1时,St = yt;当a取0时,St = St − 1。

      2.St具有逐期追溯性质,可探源至St − t + 1为止,包括全部数据。其过程中,平滑常数以指数形式递减,故称之为指数平滑法。指数平滑常数取值至关重要。平滑常数决定了平滑水平以及对预测值与实际结果之间差异的响应速度。平滑常数a越接近于1,远期实际值对本期平滑值影响程度的下降越迅速;平滑常数a越接近于 0,远期实际值对本期平滑值影响程度的下降越缓慢。由此,当时间数列相对平稳时,可取较大的a;当时间数列波动较大时,应取较小的a,以不忽略远期实际值的影响。生产预测中,平滑常数的值取决于产品本身和管理者对良好响应率内涵的理解。

      3.尽管St包含有全期数据的影响,但实际计算时,仅需要两个数值,即yt和 St − 1,再加上一个常数a,这就使指数滑动平均具逐期递推性质,从而给预测带来了极大的方便。

      4.根据公式S_1=a\cdot y_1+(1-a)S_0,当欲用指数平滑法时才开始收集数据,则不存在y0。无从产生S0,自然无法据指数平滑公式求出S1,指数平滑法定义S1为初始值。初始值的确定也是指数平滑过程的一个重要条件。

      如果能够找到y1以前的历史资料,那么,初始值S1的确定是不成问题的。数据较少时可用全期平均、移动平均法;数据较多时,可用最小二乘法。但不能使用指数平滑法本身确定初始值,因为数据必会枯竭。

      如果仅有从y1开始的数据,那么确定初始值的方法有:

      1)取S1等于y1;

      2)待积累若干数据后,取S1等于前面若干数据的简单算术平均数,如:S1=(y1+ y2+y3)/3等等。

    指数平滑的预测公式

      据平滑次数不同,指数平滑法分为:一次指数平滑法、二次指数平滑法和三次指数平滑法等。

    (一) 一次指数平滑预测

      当时间数列无明显的趋势变化,可用一次指数平滑预测。其预测公式为: y_{t+1}^\prime = a y_{t} + (1-a) y_{t}^\prime

    式中, y_{t+1}^\primet + 1期的预测值,即本期(t期)的平滑值St; ytt期的实际值; y_{t}^\primet期的预测值,即上期的平滑值St − 1 。

      该公式又可以写作: y_{t+1}^\prime = y_{t} + a (y^{t}-y_{t}^\prime)。可见,下期预测值又是本期预测值与以a为折扣的本期实际值与预测值误差之和。

    (二) 二次指数平滑预测

      二次指数平滑是对一次指数平滑的再平滑。它适用于具线性趋势的时间数列。其预测公式为:

      yt+m=(2+am/(1-a))yt'-(1+am/(1-a))yt=(2yt'-yt)+m(yt'-yt) a/(1-a)

      式中,yt= ayt-1'+(1-a)yt-1

      显然,二次指数平滑是一直线方程,其截距为:(2yt'-yt),斜率为:(yt'-yt) a/(1-a),自变量为预测天数。

    (三) 三次指数平滑预测

      三次指数平滑预测是二次平滑基础上的再平滑。其预测公式是:

      yt+m=(3yt'-3yt+yt)+[(6-5a)yt'-(10-8a)yt+(4-3a)yt]*am/2(1-a)2+ (yt'-2yt+yt')*a2m2/2(1-a)2

      式中,yt=ayt-1+(1-a)yt-1

      它们的基本思想都是:预测值是以前观测值的加权和,且对不同的数据给予不同的权,新数据给较大的权,旧数据给较小的权。

    指数平滑法的趋势调整

      一段时间内收集到的数据所呈现的上升或下降趋势将导致指数预测滞后于实际需求。通过趋势调整,添加趋势修正值,可以在一定程度上改进指数平滑预测结果。调整后的指数平滑法的公式为:

      包含趋势预测(YITt)=新预测(Yt)+趋势校正(Tt)

      进行趋势调整的指数平滑预测有三个步骤:

      1、 利用前面介绍的方法计算第t期的简单指数平滑预测(Yt);

      2、 计算趋势。其公式为: Tt=(1-b)Tt-1+b(Yt-Yt-1)其中,

    • Tt=第t期经过平滑的趋势;
    • Tt-1=第t期上期经过平滑的趋势;
    • b=选择的趋势平滑系数;
    • Yt=对第t期简单指数平滑预测;
    • Yt-1=对第t期上期简单指数平滑预测。

      3、计算趋势调整后的指数平滑预测值(YITt)。计算公式为:YITt=Yt+Tt。

    指数平滑法案例分析

    案例一:指数平滑法在销售预算中的应用[1]

      以某软件公司A为例。给出2000-2005年的历史销售资料,将数据代入指数平滑模型。预测2006年的销售额,作为销售预算编制的基础。

      由散点图示可知。根据经验判断法。A公司2000-2005年销售额时间序列波动很大。长期趋势变化幅度较大,呈现明显且迅速的上升趋势,宜选择较大的α值,可在05-O.8间选值,以使预测模型灵敏度高些,结合试算法取0.5,0.6,0.8分别测试。经过第一次指数平滑后,数列呈现直线趋势,故选用二次指数平滑法即可。

      试算结果见下表。根据偏差平方的均值(MSE)最小,即各期实际值与预测值差的平方和除以总期数.以最小值来确定合理的取值标准,经测算当α = 0.6时,MSE1 = l445.4;当α = 0.8时,MSE2=10783.7;当α = 0.5时,MSE3 = 1906.1。因此选择α = 0.6来预测2006年4个季度的销售额。

    A公司2000-2005年销售额数列散点图

      2005年第四季度S_t^{(1)}=736.8;S_t^{(2)}=679.5;;可以求得\alpha_{2005}=2S_t^{(1)}-S_t^{(2)}=2\times736.8-679.5=794.1b_{2005}=\alpha(s_t^{(1)}-S_t^{(2)})/(1-\alpha)=0.6=(736.8-679.5)/0.4=85.9则预测方Y2005 + T = 794.1 + 85.9T,因此,2006年第一、二、三、四季度的预测值分别为:

    A公司2000-2005年销售额指数平滑表

      Y1 = 794.1 + 85.9 = 800(万元)

      Y_2=794.1+85.9\times2=965.9(万元)

      Y_3=794.1+85.9\times3=1051.8(万元)

      Y_4=794.1+85.9\times4=1137.7(万元)

      综上所述,本案例首先根据销售历史资料,给出数列散点图。再根据散点图的特征选择二次指数平滑法,通过对α的试算,确定符合预测需要的α值,最后根据指数平滑模型计算出2006年14季度的销售预测值,作为销售预算的基础。

      指数平滑法是较为有效的销售预算的统计方法。利用Excel可以简便易行地进行预测,节约了预测时间并提高了预测的准确率,预测者可根据数据数列散点图的历史趋势等选择一次或多次指数平滑。但指数平滑法的应用也会受到一定限制。如采用指数平滑法需要有比较完备的历史资料;当企业销售量受季节影响较大时,时间序列分解法比指数平滑法应用效果更好等。因此,销售预测人员要根据企业的具体情况和预测的对象。把指数平滑法和定性预测方法正确地结合起来运用。才能全面认识和把握预测对象的未来发展趋势,使的预测结果更加接近客观现实,从而做出实事求是的预测结论。

    相关条目

    参考文献

    1.  张蔚虹.指数平滑法在销售预算中的应用[J].中国管理信息化,2008,11(2)
    展开全文
  • 基于CUDA平台的9点平滑、高斯平滑代码
  • 对震动信号平滑处理 用的是平均平滑法 MATLAB
  • 在很多领域里,我们有时候都要对...而有的时候只需对图像的指定界面以下的进行平滑即可。另外本人最近有学习一点GPU的知识,于是将CPU下的高斯九点平滑进行了一定程度上的改写,在误差允许范围内,进行了一定的加速。
  • matlab中可用于预测的三次指数平滑法,针对有二次趋势的数据
  • 光谱平滑,光谱平滑滤波,matlab源码
  • NDVI-SG-滤波平滑_matlabNDVI滤波_NDVI_序列数据_数据平滑_sg平滑.zip
  • 使用matlab编程软件,对选定的电脑文件夹图像进行平滑处理。
  • 使用SG滤波方法对NDVI数据进行时间序列的平滑处理,
  • 平滑:R中的空间特征平滑
  • 指数平滑算法

    2018-02-08 09:17:36
    指数平滑算法
  • 图像平滑

    2015-08-05 16:14:02
    实现图象平滑(去噪声),锐化算法的源代码-
  • 基于二阶平滑先验的图像保边平滑快速算法
  • 图像平滑之平均平滑

    千次阅读 2016-11-25 09:45:23
    图像平滑中的平均平滑的实现

    作为代码界的菜鸟,最近在尝试着用vs实现《数字图像处理与机器视觉》一书中有关图像处理的VC++代码。目前在研究空间域增强,希望自己能够越走越远^_^
    本篇是图像平滑中的平均平滑的实现。

    #include <iostream>
    #include <opencv2\core\core.hpp>
    #include <opencv2\highgui\highgui.hpp>
    #include <opencv2\imgproc\imgproc.hpp>
    using namespace std;
    using namespace cv;
    
    //常用滤波模板数组
    //平均平滑1/9
    float Template_Smooth_Avg[9] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
    /****************************************************************************************************
    用指定的模板(任意大小)来对图像进行操作,参数iTempH指定模板的高度,iTempW指定模板的宽度,
    参数ITempMX和ITempMY指定模板的中心元素坐标,参数pfArray指定模板元素,fCoef指定系数
    *****************************************************************************************************/
    void Template(Mat img,Mat &dst, int nTempH, int nTempW, int nTempMY, int nTempMX, float *pfArray, float fCoef)
    {
        int i, j;
    //#pragma omp parallel for
        for (i = nTempMY; i < img.rows - (nTempH - nTempMY) + 1; i++)
        {
            for (j = nTempMX; j < img.cols - (nTempW - nTempMX) + 1; j++)
            {
                float fResult1 = 0;
                float fResult2 = 0;
                float fResult3 = 0;
    //#pragma omp parallel for
                    for (int k = 0; k < nTempH; k++)
                    {
                        for (int l = 0; l < nTempW; l++)
                        {
    //#pragma omp critical
                            //{
                                fResult1 += img.at<Vec3b>(i + l - nTempMX, j + k - nTempMY)[0] * pfArray[k*nTempH + l];
                                fResult2 += img.at<Vec3b>(i + l - nTempMX, j + k - nTempMY)[1] * pfArray[k*nTempH + l];
                                fResult3 += img.at<Vec3b>(i + l - nTempMX, j + k - nTempMY)[2] * pfArray[k*nTempH + l];
                            //}
                        }
                    }
                    fResult1 *= fCoef;
                    fResult1 = (float)fabs(fResult1);
                    fResult2 *= fCoef;
                    fResult2 = (float)fabs(fResult2);
                    fResult3 *= fCoef;
                    fResult3 = (float)fabs(fResult3);
    
    //#pragma omp critical
                    //{
                    dst.at<Vec3b>(i, j)[0] = (fResult1>255) ? 255 : (fResult1 + 0.5);
                    dst.at<Vec3b>(i, j)[1] = (fResult2>255) ? 255 : (fResult2 + 0.5);
                    dst.at<Vec3b>(i, j)[2] = (fResult3>255) ? 255 : (fResult3 + 0.5);
                    //}
            }
        }
    }
    void main()
    {
        Mat img = imread("2.jpg");
        cvNamedWindow("原图", CV_WINDOW_FREERATIO);
        imshow("原图", img);
        Mat dst=img.clone();
        Template(img, dst, 3, 3, 1, 1, Template_Smooth_Avg, (float)1 / 9);
        cvNamedWindow("平均平滑", CV_WINDOW_FREERATIO);
        imshow("平均平滑", dst);
        waitKey(0);
    }

    原图如下:
    原图
    平均平滑后结果图如下:
    结果图
    需要注意的是由于使用的图片分辨率比较大,所以程序运行时间比较长。如何提高算法的速度是我在未来将要研究的一部分内容,这里就不再研究。

    展开全文
  • matplotlib绘制平滑的曲线

    万次阅读 多人点赞 2018-11-03 09:39:03
    matplotlib绘制平滑的曲线有2种常用的方法 1.曲线拟合 使用scipy库可以拟合曲线. 没拟合的图: import matplotlib.pyplot as plt import numpy as np T = np.array([6, 7, 8, 9, 10, 11, 12]) power = np.array(...

    matplotlib绘制平滑的曲线有2种常用的方法

    1.曲线拟合

    使用scipy库可以拟合曲线.
    没拟合的图:

    import matplotlib.pyplot as plt
    import numpy as np
    T = np.array([6, 7, 8, 9, 10, 11, 12])
    power = np.array([1.53E+03, 5.92E+02, 2.04E+02, 7.24E+01, 2.72E+01, 1.10E+01, 4.70E+00])
    plt.plot(T,power)
    plt.show()
    

    1
    使用scipy.interpolate.spline拟合曲线:

    import matplotlib.pyplot as plt
    import numpy as np
    T = np.array([6, 7, 8, 9, 10, 11, 12])
    power = np.array([1.53E+03, 5.92E+02, 2.04E+02, 7.24E+01, 2.72E+01, 1.10E+01, 4.70E+00])
    
    from scipy.interpolate import spline
    xnew = np.linspace(T.min(),T.max(),300) #300 represents number of points to make between T.min and T.max
    power_smooth = spline(T,power,xnew)
    plt.plot(xnew,power_smooth)
    plt.show()
    

    2

    2.间隔画曲线

    当matplotlib画图的横坐标为时间时,使用scipy.interpolate.spline拟合曲线就会遇到麻烦,我们可以采用间隔点画图。
    原先的图:

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.arange(0,10,0.2)
    y = np.random.rand(len(x))
    plt.plot(x,y, marker="o")
    plt.show()
    

    3
    间隔点画图:

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.arange(0,10,0.2)
    y = np.random.rand(len(x))
    plt.plot(x[::4],y[::4], marker="o")
    plt.show()
    

    4
    参考资料:
    Plot smooth line with PyPlot
    matplotlib中的平滑线图具有较少的数据点

    展开全文
  • 基于相干信号源的前向平滑与前后向平滑算法的比较
  • 高斯平滑滤波

    2017-06-03 20:56:07
    高斯平滑滤波
  • NDVI-SG-滤波平滑_matlabNDVI滤波_NDVI_序列数据_数据平滑_sg平滑_源码.zip
  • C语言写的五点3次平滑还有其他几种线性平滑,最小二乘平滑源程序可以直接用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 252,368
精华内容 100,947
关键字:

平滑