查看: 208|回复: 5|关注: 0

[已解决] 散点进行插值

[复制链接]

新手

22 麦片

财富积分


050


26

主题

92

帖子

0

最佳答案
  • 关注者: 1
如图所示,想要对红色的星号散点进行插值,使得出来的曲线比较光滑,但是由于横坐标不是单调的,利用插值函数interp1一直出错误,显示“网格向量必须包含特征点”。请教各位,有没有其他插值函数适用的?不胜感激!
插值.png
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

4

主题

1517

帖子

191

最佳答案
  • 关注者: 93
发表于 2020-9-7 22:15:50 | 显示全部楼层
转化成极坐标不就可以了么?
回复此楼 已获打赏: 0 积分

举报

入门

156 麦片

财富积分


50500


0

主题

55

帖子

17

最佳答案
  • 关注者: 2
发表于 2020-9-8 01:03:36 | 显示全部楼层 |此回复为最佳答案
可以用参数方程的思路来插值。把自变量看成是数据组的序号1:N,然后值分别是x和y。插值的自变量在1到N内。
给出参考代码如下:
  1. % 生成测试数据
  2. N=13
  3. t=linspace(0,2*pi,N)';
  4. r=25;
  5. x=r*cos(t);
  6. y=r*sin(t);
  7. Ind_negative=y<0;
  8. y(Ind_negative)=y(Ind_negative).*rand(size(find(Ind_negative)));

  9. % 插值
  10. N1=100;
  11. v=1:N;
  12. v1=linspace(1,N,N1);
  13. x1=interp1(v,x,v1,'pchip');
  14. y1=interp1(v,y,v1,'pchip');

  15. % 绘图
  16. figure
  17. hold on
  18. plot(x,y,'r*-')
  19. plot(x1,y1,'b.--','MarkerSize',5)
  20. axis equal
复制代码


ScatterInterpolation_01.png
回复此楼 已获打赏: 0 积分

举报

新手

22 麦片

财富积分


050


26

主题

92

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2020-9-8 11:41:01 | 显示全部楼层
coolchen302 发表于 2020-9-7 22:15
转化成极坐标不就可以了么?

非常感谢,我试试
回复此楼 已获打赏: 0 积分

举报

新手

22 麦片

财富积分


050


26

主题

92

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2020-9-8 11:42:05 | 显示全部楼层
zdcgy 发表于 2020-9-8 01:03
可以用参数方程的思路来插值。把自变量看成是数据组的序号1:N,然后值分别是x和y。插值的自变量在1到N内。
...

非常感谢,这效果太好了
回复此楼 已获打赏: 0 积分

举报

新手

22 麦片

财富积分


050


26

主题

92

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2020-9-8 21:11:36 | 显示全部楼层
zdcgy 发表于 2020-9-8 01:03
可以用参数方程的思路来插值。把自变量看成是数据组的序号1:N,然后值分别是x和y。插值的自变量在1到N内。
...

你好,尝试了你的方法,实现了想要的功能,非常感谢。但是插值完以后的数值超过了想要的边界,如图所示,绿色是插值完以后的数据,想要控制绿色的数据在蓝色的圆圈内,可以进一步进行设置控制插值的范围吗?
插值.png
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表