簡體   English   中英

Matlab曲線擬合一組2D點

[英]Matlab curve fitting a set of 2D points

目前我有一組2D點,如下所示。 隨機2D點

我需要獲得點的擬合曲線以確定物體的形狀。

Matlab提供樣條擬合功能 我必須將它應用於一組點。 但是,我得到的結果如下所示。 樣條擬合

         xx = linspace(-10,10,20);
         pp2 = splinefit(PV(:,1),PV(:,2),8,5);
         y2 = ppval(pp2,xx);

         plot(x,y,'.',xx,y2), grid on
         axis([-10 10 -10 10]);

PV是數據點。 我不確定問題出在哪里。

你試圖擬合PV(:,1) = f( PV(:,2) ) ,即直接擬合y=f(x) 但是從你的觀點可以看出,對於某些x值( x=0x=-15 ), y有多個y值。 因此,您無法在數學上將y=f(x)擬合為此處的任何函數f(.)

您可以做的是使用輔助參數t擬合參數曲線:

t = linspace(0, 1, size(PV,1));
ppx = splinefit(PV(:,1),t,8,5);  % x = f_x(t)
ppy = splinefit(PV(:,2),t,8,5);  % y = f_y(t)

現在您可以繪制曲線(f_x(t), f_y(t))

tt = linspace(0, 1, 50);
x2 = ppval(ppx, tt);
y2 = ppval(ppy, tt);
plot( PV(:,1), PV(:,2), '.', x2, y2); grid on;
axis([-10 10 -10 10]);

注意
該擬合方案基於PV中的點是有序的假設:即,曲線應該從PV(1,:)PV(2,:)然后到PV(3,:)等等。 如果不是這種情況(例如, PV(1,:) x值為〜-10,則PV(2,:) x值為~0且PV(3,:)跳回x~-10)然后你就陷入了困境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM