ideas to smooth a sharpe corner of a graph?
이전 댓글 표시
I'm trying to smooth a sharpe corner of a graph similar to what I've shown in the image below:

Can anyone give me some ideas how to handle this case? Should I use specific filters? interpolation techniques? etc,...
If it helps, my original case is 2D and for simplification I've drawn a 1D case above. Thanks
채택된 답변
추가 답변 (3개)
Thomas Koelen
2015년 5월 22일
편집: Thomas Koelen
2015년 5월 22일
Maybe construct splines?
example:
x=1:10;
y=rand(1,10);
cs = csapi(x,y);
fnplt(cs,2);
Image Analyst
2015년 5월 22일
One way is to use conv() to smooth/blur the signal:
windowWidth = 9; % Some odd number.
kernel = ones(1, windowWidth) / windowWidth;
smoothedSignal = conv(signal, kernel, 'same');
That is basically fitting the output element to the mean of elements in the sliding window. If you want it to follow the signal less closely, you can use a wider window.
Or you can use a Savitzky-Golay filter, done by sgolayfilt() in the Signal Processing Toolbox. I'm attaching a demo for you Mona. This is similar to conv() in that it does a fit in a sliding window, but you can specify some order of polynomial to fit to data in the window. For example, you can fit a quadratic or cubic function to the data in the window and assign the middle element to the fitted value. So with this filter, it's still a local filter but you have more control over how much you want to smooth or follow the original signal.
Mona Mahboob Kanafi
2015년 5월 25일
0 개 추천
댓글 수: 1
shmng
2016년 12월 21일
Hallo Mona, Could you please share the command to achieve this. I am not able to reteive as per your solution. How can we edit 2D settings in cftool. I am also looking for similar solution to smoothen the curve at sharp edges.
Any help shall be thankful.
Regards, Shwetha
카테고리
도움말 센터 및 File Exchange에서 Smoothing and Denoising에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!