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脚本处理空格的方法
Aug 08 Python
Python实现通讯录功能
Feb 22 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python实现月食效果实例代码
Jun 18 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
Python 调用 Windows API COM 新法
Aug 22 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP实现获取域名的方法小结
2014/11/05 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
微信小程序实现拼图小游戏
2020/10/22 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
发布你的Python模块详解
2016/09/15 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python内置函数delattr的具体用法
2017/11/23 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
python 模拟登录B站的示例代码
2020/12/15 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
自荐信如何“自荐”
2013/10/24 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
责任书格式
2015/01/29 职场文书
学生保证书格式
2015/02/27 职场文书
音乐研修感悟
2015/11/18 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
JS setTimeout与setInterval的区别
2022/04/20 Javascript
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang