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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
介绍Python中的文档测试模块
Apr 28 Python
python入门教程之识别验证码
Mar 04 Python
pycharm中连接mysql数据库的步骤详解
May 02 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
numpy np.newaxis 的实用分享
Nov 30 Python
NumPy排序的实现
Jan 21 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
简单的Python人脸识别系统
Jul 14 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学习教程之第1天
2008/06/15 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
python pyheatmap包绘制热力图
2018/11/09 Python
使用python实现抓取腾讯视频所有电影的爬虫
2019/04/15 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
阳光体育活动方案
2014/02/16 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
安阳殷墟导游词
2015/02/10 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
个人求职自荐信范文
2015/03/06 职场文书
飞屋环游记观后感
2015/06/08 职场文书
茶花女读书笔记
2015/06/29 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
python实现批量移动文件
2021/04/05 Python
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS