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获取糗百图片代码实例
Dec 18 Python
Python面向对象编程基础解析(一)
Oct 26 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
对Xpath 获取子标签下所有文本的方法详解
Jan 02 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
用header 发送cookie的php代码
2007/03/16 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
重新认识php array_merge函数
2014/08/31 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
js实现抽奖效果
2017/03/27 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
大学毕业感言200字
2014/03/09 职场文书
担保书格式及范文
2014/04/01 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
亲属关系公证书样本
2015/01/23 职场文书
贷款工资证明范本
2015/06/12 职场文书
工作简报格式范文
2015/07/21 职场文书
党组织结对共建协议书
2016/03/23 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python