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有点火? 给你7个学习它的理由!
Jun 26 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
python编写微信远程控制电脑的程序
Jan 05 Python
python机器人行走步数问题的解决
Jan 29 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
python导入模块交叉引用的方法
Jan 19 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
python框架flask表单实现详解
Nov 04 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python爬虫新手入门之初学lxml库
Dec 20 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的简易冒泡法代码分享
2012/08/28 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
document.write的几点使用心得
2014/05/14 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
幼儿园教师获奖感言
2014/03/11 职场文书
监督检查工作方案
2014/05/28 职场文书
安全环保标语
2014/06/09 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书