matlab里smooth函数是怎么实现的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab里smooth函数是怎么实现的相关的知识,希望对你有一定的参考价值。

uses the 'lowess' method with span 5.

参考技术A

smooth函数的本质就是低通滤波,就是通过低通滤波算法吧输入信号中的高频成分移除。

yy = smooth(y,method)

Matlab有以下几种方法method供选择:

    'moving'就是所谓的平滑滤波。简单的平均而已

    'lowess'一阶多项式加权线性回归

    'loess'一阶多项式加权线性回归

    'rlowess'同'lowess',但是自适应调整权值

    'rloess'同'loess',但是自适应调整权值

如果以上方法不能满意,可以matlab中的fit函数进行平滑。

参考技术B 作者:Coldwings
链接:https://www.zhihu.com/question/35545312/answer/74195080
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

不知道你这个『怎么实现』是想问到哪个地步。如果是问算法,那么看help就知道了

'moving'
Moving average (default). A lowpass filter with filter coefficients equal to the reciprocal of the span.

'lowess'
Local regression using weighted linear least squares and a 1st degree polynomial model

'loess'
Local regression using weighted linear least squares and a 2nd degree polynomial model

'sgolay'
Savitzky-Golay filter. A generalized moving average with filter coefficients determined by an unweighted linear least-squares regression and a polynomial model of specified degree (default is 2). The method can accept nonuniform predictor data.

'rlowess'
A robust version of 'lowess' that assigns lower weight to outliers in the regression. The method assigns zero weight to data outside six mean absolute deviations.

'rloess'
A robust version of 'loess' that assigns lower weight to outliers in the regression. The method assigns zero weight to data outside six mean absolute deviations.

yy = smooth(y,span,method) sets the span of method to span. For the loess and lowess methods, span is a percentage of the total number of data points, less than or equal to 1. For the moving average and Savitzky-Golay methods, span must be odd (an even span is automatically reduced by 1).

yy = smooth(y,'sgolay',degree) uses the Savitzky-Golay method with polynomial degree specified by degree.

yy = smooth(y,span,'sgolay',degree) uses the number of data points specified by span in the Savitzky-Golay calculation. span must be odd and degree must be less than span.

yy = smooth(x,y,...) additionally specifies x data. If x is not provided, methods that require x data assume x = 1:length(y). You should specify x data when it is not uniformly spaced or sorted. If x is not uniform and you do not specify method, lowess is used. If the smoothing method requires x to be sorted, the sorting occurs automatically.
6种不同的滤波器对应六中不同的平滑方法,默认用的lowess。

更多相关资料请参考http://www.viiboo.cn/Article25/280.html本回答被提问者采纳

matlab中,怎么样在主函数里调用子函数?是用啥命令啊?

我用的时候说什么调用函数的时候是要有输入和输出的
这个是什么意思啊

matlab可以在m文件函数中定义一个函数和多个子函数,但是需要注意的是子函数只能由同一m文件中的函数调用。如下面的例子:
function [max,min]=mypfun(x) %主函数
n=length(x);
max=mysubfun1(x,n);
min=mysubfun2(x);

function r=mysubfun1(x,n) %子函数1
x1=sort(x);
r=x1(n);

function r=mysubfun2(x) %子函数2
x1=sort(x);
r=x1(1);追问

那我用的时候说什么调用函数的时候是要有输入和输出的
这个是什么意思啊

追答

你不如找本书来看看还快点

参考技术A 不需要什么命令。直接将子函数的名字写在主函数中,就行了。追问

那我用的时候说什么调用函数的时候是要有输入和输出的
这个是什么意思啊

参考技术B 直接在主函数里 定义 调用追问

那我用的时候说什么调用函数的时候是要有输入和输出的
这个是什么意思啊

追答

应该是你调用的时候只写了函数名吧 需要有输入和输出参数 比如 这样调用 a=hanshu(b,c);

参考技术C 着变量X一起变化,而且依赖于X。如果变量X取某个特定的值,Y依确定的关系取相应的值,那么称Y是X的函数。这一要领是由法国数学家黎曼在19世纪提出来的,但是最早产生于德国的数学家菜布尼茨。他和牛顿是微积分的发明者。17世纪末,在他的文章中,首先使用了“function"一词。翻译成汉语的意思就是“函数。不过,它和我们今天使用的函数一词的内涵并不一样,它表示”幂”、“坐标”、“切线长”等概念。
直到18世纪,法国数学家达朗贝尔在进行研究中,给函数重新下了一个定义,他认为,所谓变量的函数,就是指由这些变量和常量所组成的解析表达式,即用解析式表达函数关系。后来瑞士的数学家欧拉又把函数的定义作了进一步的规范,他认为函数是能描画出的一条曲线。我们常见到的一次函数的图像、二次函数的图像、正比例函数的图像、反比例的图像等都是用图像法表示函数关系的。如果用达朗贝尔和欧拉的方法来表达函数关系,各自有它们的优点,但是如果作为函数的定义,还有欠缺。因为这两种方法都还停留在表面现象上,而没有提示出函数的本质来。
19世纪中期,法国数学家黎紧吸收了莱布尼茨、达朗贝尔和欧拉的成果,第一次准确地提出了函数的定义:如果某一个量依赖于另一个量,使后一个量变化时,前一个量也随着变化,那么就把前一个量叫做后一个量的函数。黎曼定义的最大特点在于它突出了就是之间的依赖、变化的关系,反映了函数概念的本质属性。
参考资料:中国教育信息网

以上是关于matlab里smooth函数是怎么实现的的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎么调用函数

matlab运行中出现如下问题,这是啥原因?好像是函数有问题

在matlab里调用一个函数,怎么知道它计算过程中迭代了多少次呢

matlab中,怎么样在主函数里调用子函数?是用啥命令啊?

matlab中function函数怎么用,为啥出错

如何在matlab中创建m文件