matlab 计算数据转折点,计算轨迹(路径)中的转折点/枢轴点

我将给出下面的numpy/scipy代码,因为我几乎没有Matlab的经验。

如果你的曲线足够平滑,你可以将你的转折点识别为那些最高的curvature。将点索引号作为曲线参数,并使用central differences scheme,可以使用以下代码计算曲率import numpy as np

import matplotlib.pyplot as plt

import scipy.ndimage

def first_derivative(x) :

return x[2:] - x[0:-2]

def second_derivative(x) :

return x[2:] - 2 * x[1:-1] + x[:-2]

def curvature(x, y) :

x_1 = first_derivative(x)

x_2 = second_derivative(x)

y_1 = first_derivative(y)

y_2 = second_derivative(y)

return np.abs(x_1 * y_2 - y_1 * x_2) / np.sqrt((x_1**2 + y_1**2)**3)

您可能需要先平滑曲线,然后计算曲率,然后确定最高曲率点。以下函数正是这样做的:def plot_turning_points(x, y, turning_points=10, smoothing_radius=3,

cluster_radius=10) :

if smoothing_radius :

weights = np.ones(2 * smoothing_radius + 1)

new

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值