如何平滑MATLAB中的情节?

我有一些9000点绘制在图上:

[Full resolution]

其实,情节并不如我想要的那样顺利。有没有办法可以将图形平滑到所需的程度?

还是某种形式的阈值,以便我可以选择性地平滑部分太颠簸的部分?

我不知道可以fast-fourier-transform帮忙吗?

一个简单的(ad hoc)方法是在每个点与其邻居进行加权平均(可由α调整):

data(2:n-1) = alpha*data(2:n-1) + (1-alpha)*0.5*(data(1:n-2)+data(3:n))

或其一些变体。是的,为了更复杂,您可以首先对数据进行傅立叶变换,然后切断高频。就像是:

f = fft(data)
f(n/2+1-20:n/2+20) = zeros(40,1)
smoothed = real(ifft(f))

这减少了最高的20个频率。小心地将它们对称地切掉,否则逆变换不再是真实的。您需要仔细选择截止频率以获得正确的平滑水平。这是一种非常简单的滤波(频域中的盒滤波),因此如果失真是不可接受的,您可以尝试轻轻地衰减高阶频率。

http://stackoverflow.com/questions/1515977/how-to-smoothen-a-plot-in-matlab

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何平滑MATLAB中的情节?