matlab在不规则区域插值,插值 – 如何在两组不规则数据之间插入点?

好主人,我终于明白了.这是最终结果:

美丽!但它做了很多工作.

我的代码太粗糙,而且对我的项目来说太具体了,对其他任何人都没用.但这是潜在的逻辑.

您必须有两组数据才能进行插值.我将这些称为“外部”曲线和“内部”曲线.假设“外部”曲线完全包围“内部”曲线,而不与“内部”曲线相交.曲线实际上只是X,Y数据的集合,并且对应于定义为Z的一组值.在此处使用的示例中,“外部”曲线对应于Z = 50并且“内部”曲线对应于Z = 100 .

重申的目的是为任何给定的Y找到X,其中Z是我们已知数据点之间的某个数字.

>首先计算未知Z代表的两个曲线集之间的百分比.因此,如果在我们的示例中Z = 75,则结果为0.5.如果Z = 60,则为0.2.如果Z = 90那么那将是0.8.称这个比例为P.

>选择“外部”曲线上的数据点,其中Y =您想要的Y.想象一下该点与0,0之间的线段.将其定义为AB.

>我们想要找到AB与“内部”曲线相交的位置.为此,我们遍历内部曲线上的每个点.将所选点和点1之间的线段定义为CD.检查AB和CD是否相交.如果没有,继续迭代直到他们这样做.

>当我们找到一个AB-CD交叉点时,我们现在看看交叉点创建的线和我们在步骤2的“外部”曲线上的原始点.然后,这个线段是内部曲线和外部曲线之间的一条线.线的斜率,如果继续“向下”图表,将与0,0相交.将此新线段定义为EF.

>找到EF长度的P%(从步骤1开始)的位置.检查Y值.这是我们想要的Y值吗?如果是(不太可能),则返回该点的X.如果没有,看看Y是否小于目标Y.如果是,则将该点的位置存储在变量中,我将其复制为低Y.然后再次返回步骤2,以获得外曲线上的下一个点.如果它大于目标Y,请查看lowY是否有值.如果是,则在两个值之间进行插值并返回插值的X.(换句话说,我们将“装入”我们想要的坐标.)

上述程序运作良好.它在Y = 0的情况下失败,但是很容易做到这一点,因为你可以在这两个特定点上进行插值.在样本数量少得多的地方,它会产生一些锯齿状的结果,但我想这是预期的(这些是Z = 5000,6000,7000,8000,9000,10000,其中只有5000和10000是已知点它们每个只有20个数据点 – 其余的都是插值的:

我并不认为这是一个优化的解决方案,但是在我的计算机上几乎可以瞬间解决积分点数,所以我认为它对于现代机器来说并不太费力,至少我拥有的总点数(30-每曲线50).

谢谢大家的帮助;通过一点点谈论这个问题有很多帮助,并且意识到我在这里真正想要的不是任何简单的线性插值,而是沿曲线的一种“径向”插值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值