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 字符串定义
Sep 25 Python
python显示天气预报
Mar 02 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python heapq使用详解及实例代码
Jan 25 Python
深入理解Python分布式爬虫原理
Nov 23 Python
Python生成rsa密钥对操作示例
Apr 26 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
PyQt5组件读取参数的实例
Jun 25 Python
Django中的静态文件管理过程解析
Aug 01 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 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 CLI实现简单的数据库实时监控调度
2009/07/01 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
Python实现读取json文件到excel表
2017/11/18 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
python和JavaScript哪个容易上手
2020/06/23 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
资深地理教师自我评价
2013/09/21 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
步步惊心观后感
2015/06/12 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
公历12个月名称的由来
2022/04/12 杂记