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的Lambda函数与排序
Oct 25 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
对Django 转发和重定向的实例详解
Aug 06 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
python中的itertools的使用详解
Jan 13 Python
python如何爬取动态网站
Sep 09 Python
Django后端按照日期查询的方法教程
Feb 28 Python
python not运算符的实例用法
Jun 30 Python
Python四款GUI图形界面库介绍
Jun 05 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生成静态HTML速度快类库
2007/03/18 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
javascript 常用方法总结
2009/06/03 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
javascript 闭包
2011/09/15 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
批处理与python代码混合编程的方法
2016/05/19 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
酒店应聘自荐信
2013/11/09 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
授权委托书范文
2014/07/31 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
学习心得体会
2019/06/20 职场文书
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js
Python matplotlib绘制雷达图
2022/04/13 Python
python双向链表实例详解
2022/05/25 Python
Python中的 No Module named ***问题及解决
2022/07/23 Python