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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
在Python中操作时间之mktime()方法的使用教程
May 22 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
flask项目集成swagger的方法
Dec 09 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 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中调用SVN命令更新网站方法
2015/01/07 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python的pycurl包用法简介
2015/11/13 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python守护进程实现过程详解
2020/02/10 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
女大学生自我鉴定
2013/12/09 职场文书
工业设计专业自荐书
2014/06/05 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
MySQL三种方式实现递归查询
2022/04/18 MySQL