三次樣條插值擬合海岸線曲線MATLAB實現

2021-10-06 04:55:52 字數 2262 閱讀 9438

1、對青島西海岸唐島灣公園沿海線選取取樣點;

2、建立計算青島西海岸唐島灣公園沿海長度的模型,並實現。

matlab匯入唐島灣公園沿海地圖並取樣

三次樣條插值求取樣點擬合函式

插值函式求一類曲線積分

換算比例尺,求得實際長度

匯入並取樣

a=imread

('c:\users\aierxuan\desktop\唐島灣公園_副本.png');

image

(a);

[x1,y1]

=ginput;

image

(a);

[x2,y2]

=ginput;

三次樣條插值

a=x1(1

):2:

x1(end);b=

x2(1)

:2:x2

(end)

;z1=

spline

(x1,y1)

;z2=

spline

(x2,y2)

;f1=

ppval

(z1,a)

;f2=

ppval

(z2,b)

;列印取樣圖

plot

(x1,y1,

'b.'

,x2,y2,

'r.'

,a,f1,

'-b'

,b,f2,

'-r'

,'linewidth'

,1.5

,'markersize',15

);title

('取樣點-擬合曲線圖');

legend

('曲線1取樣點'

,'曲線2取樣點'

,'擬合曲線1'

,'擬合曲線2');

求區段點和函式插值係數

插值函式s在各區段上滿足

node1=z1.breaks;

%返回各區段的的端點x值

node2=z2.breaks;

xs1=z1.coefs;

%返回的是插值函式s各區段的係數d c b a

xs2=z2.coefs;

積分求長度

l1=0

;l2=0;

m=size

(node1);n=

size

(node2)

; syms x;

l1=0;

l2=0;

for i=1:

m(2)

-1y=

xs1(i,1)

*(x-

node1

(i))^3

+xs1

(i,2)*

(x-node1

(i))^2

+xs1

(i,3)*

(x-node1

(i))

+xs1

(i,4);

f=sqrt(1

+diff

(y)*

diff

(y))

; l1=l1+

double

(int

(f,node1

(i),

node1

(i+1))

);endfor i=1:

n(2)

-1y=

xs2(i,1)

*(x-

node2

(i))^3

+xs2

(i,2)*

(x-node2

(i))^2

+xs2

(i,3)*

(x-node2

(i))

+xs2

(i,4);

f=sqrt(1

+diff

(y)*

diff

(y))

; l2=l2+

double

(int

(f,node2

(i),

node2

(i+1))

);endl=l1+l2

比例尺計算

image

(a);

[v1,v2]

=ginput

s=sqrt((

v1(1)

-v1(2

))^2

+(v2(

1)-v2

(2))

^2)實際長度

l=l/s*c;

三次樣條插值

條件 1 輸入 x y f x 0 leq i leq n 2 要求擬合的曲線 s x 滿足 對於任意的 1 leq i leq n 1 在 x 處一階二階導數連續,s x 也連續,且 s x f x s x f x 求解過程 設 s m 對於區間 x x s x 是 x x 上的線性函式,所以設 ...

三次樣條插值 c

include include include include using namespace std double zuigan double a,double b,double c,double f,int n 追趕法求線性方程組 for int i 0 ifor int i n 2 i 0 i...

三次樣條插值介紹

樣條插值是一種工業設計中常用的 得到平滑曲線的一種插值方法,三次樣條是其中用的較為廣泛的一種。樣條插值最初是用於函式擬合 對於平面上的離散點,進行函式擬合時,一種簡單粗暴的方法就是不光滑的直線來將離散的點相連,即我們通常所說的線性擬合。線性擬合會存在乙個問題,擬合出來的函式不夠 光滑 為了讓線條更加...