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访问sqlserver示例
Feb 10 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
Python实现的随机森林算法与简单总结
Jan 30 Python
Python装饰器的执行过程实例分析
Jun 04 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
Python中turtle库的使用实例
Sep 09 Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
python实现人像动漫化的示例代码
May 17 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
如何隐藏你的.php文件
2007/01/04 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JSON相关知识汇总
2015/07/03 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python 字符串与数字输出方法
2018/07/16 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
毕业生动漫设计求职信
2013/10/11 职场文书
精彩自我鉴定
2014/01/16 职场文书
自荐书范文范例
2014/02/13 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
质量保证书
2015/01/17 职场文书
煤矿安全保证书
2015/02/27 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
汽车车尾标语大全
2015/08/11 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书