欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MATLAB 如何求取離散點的曲率最大值

 更新時間:2021年04月15日 15:24:57   作者:天上地芒果  
這篇文章主要介紹了MATLAB 求取離散點的曲率最大值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

x0 = linspace(0.1,2,100);%x0,y0驗證函數(shù)離散點,可以非等間隔
y0 = 1./x0;
h1 = abs(diff(x0)) ;
h = [h1 h1(end)];
ht = h;
yapp1 = gradient(y0)./ht; %matlab數(shù)值近似
yapp2 = del2(y0)./ht; %matlab數(shù)值近似
k2 = abs(yapp2)./(1+yapp1.^2).^(3/2);
figure
plot(k2)
title('曲率曲線')
[~,maxFlag] = max(k2);%曲率最大位置
x_max = x0(maxFlag);
y_max = y0(maxFlag);
%畫出圖像 標(biāo)注曲率最大點
figure
plot(x0,y0,'.-');
hold on;
plot(x_max,y_max,'rp')
title('標(biāo)注最大曲率點')
xlabel('log10((norm(B*Xk-L)))')
ylabel('log10((norm(Xk)))')

補充:MATLAB 插值+計算離散點曲率

思路:點足夠密的話直接用 diff、gradient 求曲率,稀疏的話先插值再算曲率。

公式:

點密的情況 輸入曲線坐標(biāo)(1-2)求一、二階導(dǎo)數(shù)(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、輸入散點坐標(biāo)(1-2)

2、用樣條曲線(B-Spline)等方法插值得到擬合曲線(3-4)

3、diff、gradient 函數(shù)求擬合曲線的一、二階導(dǎo)數(shù)(6-11)

4、通過公式求得曲率(12)

例:余弦函數(shù)取 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

補充用法

求最大曲率并在圖中標(biāo)出

[max_val,max_ind]=max(curv);
hold on
plot(xx(max_ind),yy(max_ind),'*r');

與理論值(余弦函數(shù)曲線)對比

曲線對比

曲率對比

幾種插值方法對比

列舉四種方法,分別為:分段線性插值、三次樣條曲線(B-Spline)插值、三次 Hermite 插值(PCHIP)、修正 Akima 分段三次 Hermite 插值(Akima)

Case 1: 三維螺線

三維螺線散點

插值

俯視

側(cè)視

Case 2:二維梯形波

二維梯形波

Case 3:三維不規(guī)則折線

三維不規(guī)則折線(不等間距)

對比可得:

Case 1:B-Spline>Akima>PCHIP>Linear

Case 2:Linear>PCHIP>Akima>B-Spline

Case 3:Linear≈PCHIP≈Akima>B-Spline

故在插值的時候需要選擇適合的計算方法

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • python求眾數(shù)問題實例

    python求眾數(shù)問題實例

    這篇文章主要介紹了python求眾數(shù)問題實例,包括文件的讀寫、字典的運用及數(shù)值的計算等技巧,需要的朋友可以參考下
    2014-09-09
  • python psutil庫安裝教程

    python psutil庫安裝教程

    這篇文章給大家介紹了python psutil庫安裝教程,首先要確認(rèn)本機(jī)已安裝python環(huán)境,具體安裝過程大家參考下本文
    2018-03-03
  • Python對數(shù)據(jù)庫操作

    Python對數(shù)據(jù)庫操作

    本文給大家介紹Windows、Linux下安裝MySQL-python,及安裝過程中常遇到的問題,該如何解決,非常具有參考借鑒價值,特此分享供大家參考
    2016-03-03
  • 利用PyCharm操作Github(倉庫新建、更新,代碼回滾)

    利用PyCharm操作Github(倉庫新建、更新,代碼回滾)

    這篇文章主要介紹了利用PyCharm操作Github(倉庫新建、更新,代碼回滾),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 在Django中進(jìn)行用戶注冊和郵箱驗證的方法

    在Django中進(jìn)行用戶注冊和郵箱驗證的方法

    這篇文章主要介紹了在Django中進(jìn)行用戶注冊和郵箱驗證的方法的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 詳解Python 3.10 中的新功能和變化

    詳解Python 3.10 中的新功能和變化

    這篇文章主要介紹了詳解Python 3.10 中的新功能和變化,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python struct.unpack

    Python struct.unpack

    Python中按一定的格式取出某字符串中的子字符串,使用struck.unpack是非常高效的。
    2008-09-09
  • 基于Python實現(xiàn)交互式文件瀏覽器

    基于Python實現(xiàn)交互式文件瀏覽器

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實現(xiàn)簡單的交互式文件瀏覽器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • python分布式爬蟲中消息隊列知識點詳解

    python分布式爬蟲中消息隊列知識點詳解

    在本篇文章里小編給大家整理的是python分布式爬蟲中消息隊列知識點詳解內(nèi)容,有興趣的朋友們可以參考下。
    2020-11-11
  • 使用Python?matplotlib繪制簡單的柱形圖、折線圖和直線圖

    使用Python?matplotlib繪制簡單的柱形圖、折線圖和直線圖

    Matplotlib是Python的繪圖庫, 它可與NumPy一起使用,提供了一種有效的MatLab開源替代方案,下面這篇文章主要給大家介紹了關(guān)于使用Python?matplotlib繪制簡單的柱形圖、折線圖和直線圖的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論