What kind of Interpolation Algorithm Will be Applicable for the Following data set to obtain smooth curve?
1 次查看(过去 30 天)
显示 更早的评论
Hello there,
I have a following data set,
x =
[443.0000 443.9000 482.0000 496.6000 560.0000 561.4000 654.6000 664.5000 703.9000 740.2000 782.5000 835.1000 864.7000 864.8000 1608.9000 1613.7000 2200.7000 2202.4 ]
y =
[1.0464 1.0641 0.9832 0.9631 0.9370 0.9358 0.9611 0.9574 0.9820 0.9955 1.0287 1.0034 1.0021 1.0063 1.0372 1.0336 1.0343 1.0290 ]
This plot represents the actual data set
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1171468/image.jpeg)
Now I was doing shape preserving interpolation
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1171473/image.jpeg)
In this case, this type of interpolation following the actual data, At this point I want to perform different interpolation algorithm which helps to smoothing the interpolating data set.
Could you please share any idea?
Thank you.
1 个评论
John D'Errico
2022-10-27
编辑:John D'Errico
2022-10-27
If the algorithm changes the data (i.e., smooths it) then it is not interpolation.
采纳的回答
Bruno Luong
2022-10-27
编辑:Bruno Luong
2022-10-27
It looks like your data has a couples of pairs/tripples that are closely spread.
I suggest to merge thme to a single point then fit the data that are merged.
x = [443.0000 443.9000 482.0000 496.6000 560.0000 561.4000 654.6000 664.5000 703.9000 740.2000 782.5000 835.1000 864.7000 864.8000 1608.9000 1613.7000 2200.7000 2202.4 ];
y = [1.0464 1.0641 0.9832 0.9631 0.9370 0.9358 0.9611 0.9574 0.9820 0.9955 1.0287 1.0034 1.0021 1.0063 1.0372 1.0336 1.0343 1.0290 ];
[xu,~,J]=uniquetol(x,10,'DataScale',1);
xi=linspace(min(x),max(x),500);
yu=accumarray(J(:),y(:),[],@mean);
yi=interp1(xu,yu,xi,'makima');
plot(x,y,'or',xi,yi,'b');
3 个评论
Bruno Luong
2022-10-27
You are welcome
PS: I just edit the code to take the average of y before interpolation.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!