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!