当前位置: 首页 > 编程日记 > 正文

Spline interpolation and Savitzki-Golay smoothing

转自:http://octave.1599824.n4.nabble.com/Spline-interpolation-and-Savitzki-Golay-smoothing-td1675136.html

## natural-cubic-spline interpolation
## usage: yspline = spline(x,y,xspline)
## example:
## x = 0:10; y = sin(x);
## xspline = 0:0.1:10; yspline = spline(x,y,xspline);
## plot(x,y,"+",xspline,yspline);
## Given the vectors x and y, which tabulate a function, with
## x(1) < x(2) < x(3) <... or x(1) > x(2) > x(3) >..., and given
## the vector xspline, this function returns a natural-cubic-spline
## interpolated vector yspline.
## author: Zdenek Remes, May 22, 1999


function ynew = spline(x,y,xnew)
[x,index]=sort(x);
y=y(index);
n=length(y);
y2(1)=0.0;
y2(n)=0.0;
u(1)=0.0;
for i=2:n-1
  sig=(x(i)-x(i-1))/(x(i+1)-x(i-1));
  p=sig*y2(i-1)+2.0;
  y2(i)=(sig-1.0)/p;
  u(i)=(y(i+1)-y(i))/(x(i+1)-x(i))-(y(i)-y(i-1))/(x(i)-x(i-1));
  u(i)=(6.0*u(i)/(x(i+1)-x(i-1))-sig*u(i-1))/p;
endfor;
k=n-1;
while (k >= 1)
  y2(k)=y2(k)*y2(k+1)+u(k);
  k--;
endwhile;

i1=1; in=length(xnew);

#if (xnew(1) < x(1))
#  error("spline: bad xspline");
#endif;
#if (xnew(in) > x(n))
#  error("spline: bad xspline");
#endif;
 
if (xnew(1) == x(1))
  ynew(1)=y(1);
  i1=2;
endif;
if (xnew(in) == x(n))
  ynew(in)=y(n);
  in=in-1;
endif;
 

for i=i1:in  
  khi=n;
  klo=1;
  while ((khi-klo) > 1)
    k=floor((khi+klo)/2);
    if (x(k) > xnew(i))
      khi=k;
    else
      klo=k;  
    endif;
  endwhile;
  h=x(khi)-x(klo);
  a=(x(khi)-xnew(i))/h;
  b=(xnew(i)-x(klo))/h;
  ynew(i)=a*y(klo)+b*y(khi)+((a^3-a)*y2(klo)+(b^3-b)*y2(khi))*(h*h)/6.0;
endfor;
endfunction;

## Savitzky-Golay smoothing filter
## usage: [xsavgol,ysavgol]=savgol(x,y,nl,nr,m)
## example: x=0:0.01:3;y1=sin(x.^3);y=y1+(rand(1,301)-0.5)/3;
##    [xsavgol,ysavgol]=savgol(x,y,10,10,2);
##    plot(x,y,"+",xsavgol,ysavgol,x,y1)
## Given vectors x, y containing a tabulated data y=f(x) with
## equally spaced x's this function calculates smoothed data
## ysavgol=g(xsavgol) by Savitzky-Golay smoothing filter.
## nl is the number of leftward (past) data points used, while
## nr is the number of rightward (future) data points, making
## the total number of data points used nl+nr+1. m is the order
## of the smoothing polynomial, also equal to the highest
## conserved moment; usual values are m=2 or m=4.
## The idea of Savitzky-Golay filtering is to smooth the
## underlying data y=f(x) within the moving window not by a
## constant (whose estimate is the average), but by a poly-
## nomial of higher order. Thus for a point y(i) the function
## savgol fits by a least-squares method a polynomial to
## points y(i-nl), ..., y(i+nr) in the moving window, and
## then set g(i-nl+1) to the value of that polynomial at
## position x(i).
## Zdenek Remes, Mai 22, 1999
       
function [xnew,ynew]=savgol(x,y,nl, nr, M)
    if max(diff(x,2))>100*eps
        error("The x's must be equally spaced.")
    endif
    for i=-nl:nr
        for j=0:M
            A(i+nl+1,j+1)=i^j;
        endfor
    endfor
    AA=inv(A'*A);
    for i=-nl:nr
        cc=0;
        for m=0:M
            cc=cc+AA(1,m+1)*i^m;
        endfor
    c(i+nl+1)=cc;
    endfor
   
    nx=length(x);
    for i=nl:nx-nr-1
        yy=0;
        for j=-nl:nr
            yy=yy+c(j+nl+1)*y(i+j+1);
        endfor
        xnew(i-nl+1)=x(i+1);
        ynew(i-nl+1)=yy;
    endfor    
endfunction

相关文章:

SpringBoot实现热部署(修改class不需要重启)

热部署: devtools可以实现页面热部署(即页面修改后会立即生效&#xff0c; 这个可以直接在application.properties文件中配置spring.thymeleaf.cachefalse来实现) 实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。 注意&#xff1a;因为采用的虚拟机机制&…

Oracle中查看表空间的使用率的脚本

如题&#xff1a; select f.tablespace_name tablespace_name, round((d.sumbytes / 1024 / 1024 / 1024), 2) total_g, round(f.sumbytes / 1024 / 1024 / 1024, 2) free_g, round((d.sumbytes - f.sumbytes) / 1024 / 1024 / 1024, 2) used_g, round((d.sumbytes - f.sumbyte…

vue实现多个元素或多个组件之间动画效果

2019独角兽企业重金招聘Python工程师标准>>> 多个元素的过渡 <style>.v-enter,.v-leave-to{opacity: 0;}.v-enter-acitve,.v-leave-active{opacity: opacity 1s;} </style> <div idapp><transition><div v-ifshow>hello world</di…

干货 | 20个教程,掌握时间序列的特征分析(附代码)

作者 | Selva Prabhakaran 译者 | Tianyu责编 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导语】时间序列是指以固定时间为间隔的序列值。本篇教程将教大家用 Python 对时间序列进行特征分析。1、什么是时间序列&#xff1f;时间序列是指以固定时间为间…

利用OpenCV求取图像的重心

转自&#xff1a;http://blog.csdn.net/lxiaoxiaot/article/details/6539834 不规则区域的矩&#xff0c;表示把一个归一化的灰度级图像函数理解为一个二维随机变量的概率密度。 这个随机变量的属性可以用统计特征--矩&#xff08;Moments&#xff09;来描述。通过假设非零的像…

C++中Ansi、Unicode、UTF8字符串之间的转换和写入

转自: http://dark0729.blogbus.com/logs/51496111.html Ansi字符串我们最熟悉&#xff0c;英文占一个字节&#xff0c;汉字2个字节&#xff0c;以一个\0结尾&#xff0c;常用于txt文本文件 Unicode字符串&#xff0c;每个字符(汉字、英文字母)都占2个字节&#xff0c;以2个连…

MyBatis的扩展点(plugins)

2019独角兽企业重金招聘Python工程师标准>>> 1、mybatis扩展点plugins mybatis的扩展是通过拦截器Interceptor来实现的&#xff0c;本质上就是JDK的动态代理&#xff0c;所以它只能对接口进行拦截&#xff0c;mybatis可以对以下四个接口类型进行拦截&#xff0c;也就…

linux中使用CST时间

GMT(Greenwich Mean Time&#xff0c;格林威治标准时间): 是指位于英国伦敦郊区的格林尼治天文台的标准时间&#xff0c;因为本初子午线被定义在通过那里的经线。 UTC(Universal Time/Temps Cordonn 世界标准时间)CST(Central Standard Time 國家標準時間&#xff0c;一說中原標…

到「黄埔学院」去:打造AI首席架构师,第二期限量招募!

今年 1 月&#xff0c;百度联合“深度学习技术及应用国家工程实验室”成立黄埔学院&#xff0c;旨在为产业培养第一批“首席AI架构师”。黄埔学院一期学员历时半年的学习和交流&#xff0c;6 月 16 日&#xff0c;黄埔学院一期学员迎来了毕业典礼&#xff0c;并在 7 月百度 AI开…

linux守护进程的创建

下面的完成了这样一个功能&#xff0c;创建一个守护进程&#xff0c;每个一秒在/tmp目录下的文件peng.txt中记录当前系统时间。 一、守护进程 守护进程是linux中的后台服务进程&#xff0c;在系统启动时开始运行&#xff0c;在系统关闭时终止。Linux系统中的大多数服务进程都是…

tesseract3.01的训练和使用

相关源码、资源下载&#xff1a;http://code.google.com/p/tesseract-ocr/downloads/list 训练步骤&#xff1a; 1、 Generate Training Images&#xff1a;生成tif图像文件(简单的几个汉字)&#xff1b; 如&#xff1a;ABC.Roman.exp0.tif([lang].[fontname].exp[num].tif)…

旷视推出鼻纹识别,用AI寻找丢失宠物

来源 | 转载自旷视城市大脑&#xff08;ID&#xff1a;MEGVII_CityBrain)导读&#xff1a;随着人工智能技术&#xff08;AI&#xff09;的大热&#xff0c;基于深度学习方法的人脸识别技术已成熟落地&#xff0c;在解锁、支付、认证、摄像等生活方方面面&#xff0c;各个大厂推…

Qt浅谈之一:内存泄露(总结)

一、简介 Qt内存管理机制&#xff1a;Qt 在内部能够维护对象的层次结构。对于可视元素&#xff0c;这种层次结构就是子组件与父组件的关系&#xff1b;对于非可视元素&#xff0c;则是一个对象与另一个对象的从属关系。在 Qt 中&#xff0c;在 Qt 中&#xff0c;删除父对…

LINUX新手入门-1.装系统

LINUX新手入门-1.装系统首先我们用虚拟机模拟 装linux系统&#xff0c;然后下一步下一步&#xff0c;然后完成后&#xff0c;编辑一些设置&#xff0c;把镜像放上面就可以了选第一项&#xff0c;安装系统&#xff0c;查看镜像是否能运行&#xff0c;直接跳过&#xff0c;选择语…

Log4cplus1.04的使用

首先&#xff0c;从http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/下载最新的版本&#xff0c;解压缩&#xff0c;用vs2008打开msvc8文件夹下的log4cplus.sln&#xff0c;并按照提示转换。在Solution Configurations下拉列表框中&#xff0c;会有Debug、D…

FRVT赛程全纪录:格灵深瞳全球排名前五

作者 | 张德兵&#xff0c;格灵深瞳首席科学家&算法部负责人来源 | 转载自知乎张德兵最近两个月&#xff0c;格灵深瞳首席科学家&算法部负责人张德兵与算法团队参加了全球人脸识别算法测试(FRVT、Face Recognition Vendor Test)。虽然是第一次参加此比赛&#xff0c;格…

反转比特位(文章最后有干货)【转】

转自&#xff1a;https://blog.csdn.net/wuxianglonghaohao/article/details/21602305 http://www.newhottopic.com/2014/03/20/reverse-bits/ 把一个无符号整数的比特位反转顺序。有很多种方法来实现这个。我们这里给出一个算法&#xff1a;通过异或运算来交换&#xff0c;然后…

过关斩将打进Kaggle竞赛Top 0.3%,我是这样做的

作者 | Lavanya Shukla译者 | Monanfei责编 | 夕颜出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;导读&#xff1a;刚开始接触数据竞赛时&#xff0c;我们可能会被一些高大上的技术吓到。各界大佬云集&#xff0c;各种技术令人眼花缭乱&#xff0c;新手们…

JavaBean规范

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;1&#xff09;JavaBean 类必须是一个公共类&#xff0c;并将其访问属性设置为 public &#xff08;2&#xff09;JavaBean 类必须有一个空的构造函数&#xff1a;类中必须有一个不带参数的公用构造器&#x…

vigra1.8.0的使用

VIGRA stands for "Vision with Generic Algorithms". Its a novel computer vision library that puts its main emphasis oncustomizablealgorithms and data structures. 1、首先&#xff0c;从http://hci.iwr.uni-heidelberg.de/vigra/下载最新源代码&#xff0…

17个Python小窍门

python中相对不常见却很实用的小窍门。 空谈不如来码代码吧&#xff1a; 交换变量值 给列表元素创建新的分隔符 找列表中出现次数最多的元素 核对两个字符是否为回文 反向输出字符串 反向输出列表 转置2维数组 链式比较 我刚整理了一套2018最新的0基础入门和进阶教程&#xff0…

用产品思路建设中台,这走得通吗?| 白话中台

作者 | 王健&#xff0c;ThoughtWorks首席咨询师。 十多年国内外大型企业软件设计开发&#xff0c;团队组织转型经验。一直保持着对技术的热爱&#xff0c;热衷于技术分享。目前专注在企业平台化转型、中台战略规划&#xff0c;微服务架构与实施&#xff0c;大型遗留系统服务化…

利用cvMinAreaRect2求取轮廓最小外接矩形

转自&#xff1a;http://blog.csdn.net/mine1024/article/details/6044856 对给定的 2D 点集&#xff0c;寻找最小面积的包围矩形&#xff0c;使用函数&#xff1a; CvBox2D cvMinAreaRect2( const CvArr* points, CvMemStorage* storageNULL ); points 点序列或点集数组 …

电脑开机显示Invalidsystemdisk

开机或重启无法进入系统&#xff0c;并在屏幕上显示Invalidsystemdisk&#xff0c;Replacethediskandthenpressanykey或者diskerror之类的字样&#xff0c;这是怎么回事&#xff0c;该如何解决&#xff1f;今天u大师就为大家解决下。 出现这个原因是因为现在的电脑没有可以启…

Windows7 64位下vs2008配置OpenCV2.3.1

1、下载OpenCV2.3.1&#xff1a;http://www.opencv.org.cn/index.php/Download&#xff1b; 2、下载后解压缩&#xff1a;OpenCV-2.3.1-win-superpack.exe&#xff0c;生成一个opencv文件夹&#xff1b; 3、下载CMake&#xff1a;http://www.cmake.org/cmake/resources/softw…

腾讯拥抱开源:首次公布开源路线图,技术研发向共享、复用和开源迈进

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;去年&#xff0c;知乎上一篇讨论腾讯技术的帖子异常火爆&#xff0c;讨论的主题是当下&#xff08;2018 年&#xff09;腾讯的技术建设是否处于落后同体量公司的状态&#xff0c;这篇帖子得…

Babylon.js 3.3发布:更强大的粒子系统和WebVR支持

Babylon.js 3.3版本利用微软混合现实工具包&#xff08;MRTK&#xff09;的功能来改进WebVR开发&#xff0c;并改进了其粒子系统控件。 MRTK提供了一系列脚本和组件来加速混合现实应用程序的开发。为了简化GUI VR构建&#xff0c;Bablyon.js利用3D体积网格来布局VR场景的界面&a…

基于Erlang语言的视频相似推荐系统 | 深度

作者丨gongyouliu来源 | 转载自大数据与人工智能&#xff08;ID:ai-big-data&#xff09;【导语】&#xff1a;作者在上一篇文章《基于内容的推荐算法》中介绍了基于内容的推荐算法的实现原理。在本篇文章中作者会介绍一个具体的基于内容的推荐算法的实现案例。该案例是作者在2…

MinGW简介

转自&#xff1a;http://baike.baidu.com/view/98554.htm MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境&#xff0c;它是Minimalist GNU on Windows的略称。这里的“纯粹”是指使用msvcrt.dll的应用程序。无法使用MFC (Microsoft Foundation Classes微软基础类…

Confluence 6 创建小组的公众空间

2019独角兽企业重金招聘Python工程师标准>>> 现在是我们可以开始创建公众空间的时候了&#xff0c;全世界都希望知道这个项目和勇敢的探险活动。 在这个步骤中&#xff0c;我们将会创建一个项目小组的空间&#xff0c;并且将这个空间公布给全世界。这个表示的是你将…