How to measure smoothness of a signal

조회 수: 27 (최근 30일)
Konvictus177
Konvictus177 2021년 8월 3일
편집: Jakeb Chouinard 2021년 8월 3일
Hello,
Lets say I have two signals with a different number of data points - a step function and a smooth spline as you can see below. What is mathematical operation I can use to quantify the "smoothness" of both signals.
Thanks.
Curve1: a step function
Curve2: "smooth" spline

답변 (1개)

Jakeb Chouinard
Jakeb Chouinard 2021년 8월 3일
편집: Jakeb Chouinard 2021년 8월 3일
I'm going to make an assumption that the functions have the same domain and are meant to represent the same thing.
My suggested approach would be: for each datapoint in the original function, find its corresponding datapoint on the smoothed spline. Find the vector between each point (if this is just a 1D equation [f(x)=y] then it will just be the differences in y) and take its magnitude. Then, you could sum the magnitudes of the vectors in order to quanitfy how close or far the step function is from the smooth spline. If the step function is continuous, it may be necessary to discretize it so that it is of the form f below.
E.g.
% Our related dataset
f = [(0:pi/20:pi/2)', rand(11,1)];
% Our smoothed function
g = [(0:pi/20:pi/2)', sin((0:pi/20:pi/2))'];
% Our summated difference function based on the dataset and smoothed
% function. We desire a zero deviation from smoothness; the higher the
% number, the less smooth the step function is relative to the spline
devFromSmoothness = sum(sqrt(sum((f-g).^2,2)),1);
Cheers,
Jakeb

카테고리

Help CenterFile Exchange에서 Smoothing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by