MATLAB 如何求取离散点的曲率最大值


Posted in Python onApril 16, 2021

我就废话不多说了,大家还是直接看代码吧~

x0 = linspace(0.1,2,100);%x0,y0验证函数离散点,可以非等间隔
y0 = 1./x0;
h1 = abs(diff(x0)) ;
h = [h1 h1(end)];
ht = h;
yapp1 = gradient(y0)./ht; %matlab数值近似
yapp2 = del2(y0)./ht; %matlab数值近似
k2 = abs(yapp2)./(1+yapp1.^2).^(3/2);
figure
plot(k2)
title('曲率曲线')
[~,maxFlag] = max(k2);%曲率最大位置
x_max = x0(maxFlag);
y_max = y0(maxFlag);
%画出图像 标注曲率最大点
figure
plot(x0,y0,'.-');
hold on;
plot(x_max,y_max,'rp')
title('标注最大曲率点')
xlabel('log10((norm(B*Xk-L)))')
ylabel('log10((norm(Xk)))')

MATLAB 如何求取离散点的曲率最大值

补充:MATLAB 插值+计算离散点曲率

思路:点足够密的话直接用 diff、gradient 求曲率,稀疏的话先插值再算曲率。

公式:

MATLAB 如何求取离散点的曲率最大值

点密的情况 输入曲线坐标(1-2)求一、二阶导数(4-9)通过公式求得曲率(10)

x = 0:0.01:7;
y = cos(x*0.5*pi); 
h1 = abs(diff(x));
h = [h1 h1(end)];
ht = h; 
y1 = gradient(y)./ht;
y2 = gradient(y1)./ht;
curv = abs(y2)./sqrt((1+y1.^2).^3); 
plot(x,y,'-',x,curv,'--r);
legend('Raw Data, 'Curvature','Location',"best");
grid on

图像与下文理论值图像相同

点稀疏的情况

1、输入散点坐标(1-2)

2、用样条曲线(B-Spline)等方法插值得到拟合曲线(3-4)

3、diff、gradient 函数求拟合曲线的一、二阶导数(6-11)

4、通过公式求得曲率(12)

例:余弦函数取 8 个点,用 B-Spline 插值

x = 0:1:7;
y = cos(x*0.5*pi);
xx = 0:0.01:7;
yy = spline(x,y,xx); 
h1 = abs(diff(xx));
h = [h1 h1(end)];
ht = h; 
yy1 = gradient(yy)./ht;
yy2 = gradient(yy1)./ht;
curv = abs(yy2)./sqrt((1+yy1.^2).^3); 
plot(xx,yy,'-',xx,curv,'--r',x,y,'o-');
legend('B-Spline', 'Curvature','Raw Data','Location',"best");
grid on

MATLAB 如何求取离散点的曲率最大值

补充用法

求最大曲率并在图中标出

[max_val,max_ind]=max(curv);
hold on
plot(xx(max_ind),yy(max_ind),'*r');

与理论值(余弦函数曲线)对比

 

 

 

曲线对比

 

MATLAB 如何求取离散点的曲率最大值

曲率对比

几种插值方法对比

列举四种方法,分别为:分段线性插值、三次样条曲线(B-Spline)插值、三次 Hermite 插值(PCHIP)、修正 Akima 分段三次 Hermite 插值(Akima)

Case 1: 三维螺线

 

 

MATLAB 如何求取离散点的曲率最大值

 

 

三维螺线散点

 

 

MATLAB 如何求取离散点的曲率最大值

 

 

插值

 

 

MATLAB 如何求取离散点的曲率最大值

 

 

俯视

 

 

MATLAB 如何求取离散点的曲率最大值

 

 

侧视

Case 2:二维梯形波

 

 

MATLAB 如何求取离散点的曲率最大值

 

 

二维梯形波

Case 3:三维不规则折线

 

 

MATLAB 如何求取离散点的曲率最大值

 

 

三维不规则折线(不等间距)

对比可得:

Case 1:B-Spline>Akima>PCHIP>Linear

Case 2:Linear>PCHIP>Akima>B-Spline

Case 3:Linear≈PCHIP≈Akima>B-Spline

故在插值的时候需要选择适合的计算方法

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python网络编程详解
Oct 31 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
python实现浪漫的烟花秀
Jan 30 Python
简单了解python协程的相关知识
Aug 31 Python
python模块常用用法实例详解
Oct 17 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
python中判断文件结束符的具体方法
Aug 04 Python
python 利用zmail库发送邮件
Sep 11 Python
用Python远程登陆服务器的步骤
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 #Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 #Python
python中print格式化输出的问题
Apr 16 #Python
CocosCreator ScrollView优化系列之分帧加载
深度学习tensorflow基础mnist
Python 多线程之threading 模块的使用
Apr 14 #Python
You might like
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
Python学习资料
2007/02/08 Python
Python3基础之输入和输出实例分析
2014/08/18 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Django框架模板的使用方法示例
2019/05/25 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
在pycharm中显示python画的图方法
2019/08/31 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
PHP开发工程师面试问题集锦
2012/11/01 面试题
房地产广告词大全
2014/03/19 职场文书
小学运动会开幕词
2015/01/28 职场文书
小学运动会前导词
2015/07/20 职场文书
教师旷工检讨书
2015/08/15 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL