如果您检查Matlab的^{}函数返回的矩阵b,您将看到中心行与SciPy的savgol_coeffs返回的一维数组相同。b的上半部分和下半部分各有(framelen - 1)/2行,是要应用到信号末端的Savitzky-Golay滤波器的系数,其中滤波器是非对称的。也就是说,对于信号每一端的(framelen - 1)/2值,使用不同的一组系数来计算每个滤波值。在

您可以使用savgol_coeffs通过迭代pos参数来生成b。下面的ipython会话显示了一个示例。在In [74]: import numpy as np

In [75]: from scipy.signal import savgol_coeffs

In [76]: np.set_printoptions(precision=11, linewidth=90)

In [77]: order = 3

In [78]: windowlen = 5

这些是对称(即中心)Savitzky-Golay滤波器的系数。一维数组应与sgolay返回的矩阵的中心行匹配:

^{pr2}$

如果我们设置pos=windowlen-1,我们将得到在窗口一端计算滤波器的系数。它们应该与sgolay返回的数组的第一行相匹配:In [80]: savgol_coeffs(windowlen, order, pos=windowlen-1)

Out[80]: array([ 0.98571428571, 0.05714285714, -0.08571428571, 0.05714285714, -0.01428571429])

类似地,pos=0给出了窗口另一端的系数。它们应该与sgolay返回的矩阵的最后一行匹配:In [81]: savgol_coeffs(windowlen, order, pos=0)

Out[81]: array([-0.01428571429, 0.05714285714, -0.08571428571, 0.05714285714, 0.98571428571])

下面是与Matlab的sgolay的返回值匹配的完整数组:In [82]: b = np.array([savgol_coeffs(windowlen, order, pos=p) for p in range(windowlen-1, -1, -1)])

In [83]: b

Out[83]:

array([[ 0.98571428571, 0.05714285714, -0.08571428571, 0.05714285714, -0.01428571429],

[ 0.05714285714, 0.77142857143, 0.34285714286, -0.22857142857, 0.05714285714],

[-0.08571428571, 0.34285714286, 0.48571428571, 0.34285714286, -0.08571428571],

[ 0.05714285714, -0.22857142857, 0.34285714286, 0.77142857143, 0.05714285714],

[-0.01428571429, 0.05714285714, -0.08571428571, 0.05714285714, 0.98571428571]])

如果将其与Matlab中b = sgolay(3, 5)的结果进行比较,就会发现它们是相同的。在

要获得sgolay返回的g矩阵,必须调用savgol_coeffs,并将deriv设置为range(order+1)中的值,反转并转置数组,并按导数顺序的阶乘进行缩放。要反转系数,可以使用::-1形式的一部分,或者可以使用savgol_coeffs的use选项。在

下面是一种使用savgol_coeffs生成g矩阵的方法,其中order=3和{}:In [12]: import numpy as np

In [13]: from scipy.signal import savgol_coeffs

In [14]: from scipy.special import factorial

In [15]: np.set_printoptions(precision=11, linewidth=90, suppress=True)

In [16]: order = 3

In [17]: windowlen = 5

In [18]: g = np.array([savgol_coeffs(windowlen, order, deriv=d, use='dot') for d in range(order+1)]).T / factorial(np.arange(order+1))

In [19]: g

Out[19]:

array([[-0.08571428571, 0.08333333333, 0.14285714286, -0.08333333333],

[ 0.34285714286, -0.66666666667, -0.07142857143, 0.16666666667],

[ 0.48571428571, 0. , -0.14285714286, 0. ],

[ 0.34285714286, 0.66666666667, -0.07142857143, -0.16666666667],

[-0.08571428571, -0.08333333333, 0.14285714286, 0.08333333333]])

您不会说为什么要在Python中使用完整的windowlenxwindowlen数组。你不需要它来使用savgol_filter。在

matlab (k),MATLAB的sgolay(k,f)的Python等价物是什么?相关推荐

  1. 【MATLAB】Parzen窗与K近邻算法原理与代码详解

    文章目录 1.非参数估计原理 2.Parzen窗 2.1.算法原理 2.2.Matlab实现与参数探究 3.K近邻 3.1.算法原理 3.2.Matlab实现与参数探究 1.非参数估计原理 \qqua ...

  2. matlab计算macd_[转载]4.K线图以及常用技术指标的Matlab实现-基于Matlab的量化投资...

    本次主要讲解用Matlab来实现K线图以及常用的技术指标. 相关前导帖子浏览: 系列帖子目录 Matlab的Bar图中Bar颜色灵活设置的一点总结[by faruto] [原创]坐标轴刻度标签旋转升级 ...

  3. matlab的技术指标,[转载]4.K线图以及常用技术指标的Matlab实现-基于Matl

    本次主要讲解用Matlab来实现K线图以及常用的技术指标. 相关前导帖子浏览: 系列帖子目录 Matlab的Bar图中Bar颜色灵活设置的一点总结[by faruto] [原创]坐标轴刻度标签旋转升级 ...

  4. 概率特性仿真实验与程序-Matlab仿真-随机数生成-负指数分布-k阶爱尔兰分布-超指数分布

    概率特性仿真实验与程序-Matlab仿真-随机数生成-负指数分布-k阶爱尔兰分布-超指数分布 使用Java中的SecureRandom.nextDouble()生成一个0~1之间的随机浮点数,然后使用 ...

  5. matlab计算原点矩,关于用matlab求样本均值方差以及k阶原点矩的matlab程序

    关于用matlab求样本均值方差以及k阶原点矩的matlab 程序 关于用matlab求样本均值和方差以及matlab程 序 1n1. 样本均值,公式xX,(其中X为样本).程序如下: ,i,1in ...

  6. matlab计算macd_matlab股市图k线 matlab画macd图

    我们在进行均线操盘时常会用到k线走势图以及分时图来综合的判断未来股市的趋势走向.以便于能够及时的做出相应的调整.我们在k线形态图已经明白怎么去做止盈.那么对于分时图而言,投资如何在这里面利用均价线做止 ...

  7. 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

    回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 基本介绍 划分原理 留一划分 交叉验证 K折交叉 程序设计 ...

  8. matlab knn,MATLAB K近邻算法 — knnsearch() 函数 | 学步园

    K近邻 IDX = knnsearch(X,Y) finds the nearest neighbor in X for each point in Y. X is an MX-by-N matrix ...

  9. matlab的sinxx,用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01....

    在来matlab里面输入edit fun.m:在弹出的窗口自输入bai以下内du容:function f=fun(x,y):f=x.^2+sin(x.*y)+2*y;:保存一下zhi.最后在matla ...

  10. 设非零得实系数多项式 $f(x)$ (即系数都是实数得多项式)满足 $f(f(x)) = f^k(x)$,其中 $k$ 是给定得正整数。求多项式 $f(x)$

    设非零得实系数多项式 f(x)f(x)f(x) (即系数都是实数得多项式)满足 f(f(x))=fk(x)f(f(x)) = f^k(x)f(f(x))=fk(x),其中 kkk 是给定得正整数.求多 ...

最新文章

  1. 白盒测试各种“覆盖”间的拓扑关系及白盒用例常用要求
  2. 统计简单学_假说检定
  3. 变换域隐写术检测分析
  4. Matlab | Matlab从入门到放弃(5)——矩阵与format
  5. Fedora ssh服务,防火墙服务设置
  6. C#将DataTable海量数据导出到Excel
  7. 图像分类数据集类型--典型模型--相关论文
  8. Java基础之访问文件与目录——获取与文件存储有关的信息(GetFileStores)
  9. 仓库管理软件,仓库管理系统,希创条码,wms仓库管理软件
  10. Opencv图像二值化操作
  11. 不谋一时不足以谋一域_请问不谋万世者不足谋一时,不谋全局者,不足谋一域,接下来是什么?这段话太精辟了,能不能把全文发送过来?...
  12. 如何用仅用C语言判断编译器的大小端
  13. 微信红包 php算法,基于PHP微信红包的算法探讨
  14. 【win10蓝屏】记录一下,随机蓝屏,开机蓝屏,使用中蓝屏的经历
  15. 分数化成有限小数的方法_怎样把分数化成小数
  16. 《From Captions to Visual Concepts and Back》阅读笔记
  17. Springboot中EasyExcel导出及校验后导入前后台功能实现
  18. FS9017R.是一款单节4.2V锂电池充电管理IC
  19. 安装taro踩到小坑
  20. 总结二:底部导航栏的实现

热门文章

  1. C语言:学生信息管理系统(详解+源码)
  2. 苹果wifi网速慢怎么办_手机输入3个数字,wifi速度就瞬间飞起来
  3. Qt编写ERP库存库房发货电子看板
  4. php商城建站,php商城建站系统
  5. 依据银行卡号获取银行信息Java代码
  6. javaweb邮箱页面架构
  7. 同步和异步有什么区别,分别在什么场景下使用
  8. Linux倒序赋值用molloc函数,请教一个C语言函数malloc的问题
  9. ie8视频播放器兼容
  10. centOS 安装dns服务器