2012-01-30 75 views
2

我正在尋找一種Matlab中的算法,它可以保留我的數據的形狀,同時允許我夾緊兩端。我試圖從絃線,前緣角度,後緣角度和最大弧線位置生成弧線。有關定義,請參閱Airfoil terminology。使用這些信息,我想要在前沿和後沿之間生成任意數量的點,在弦上均勻分佈。在Matlab中保持形狀保持夾緊端部插值

這裏是我到目前爲止評估的算法:

「pchip」似乎並沒有讓夾緊,除非我輸錯多次搜索的時候,但確實提供了適當的形狀保存。

'樣條'不保留形狀。使用3點數據,中間數據點爲最大外傾角,兩端夾緊,樣條線不能保證中間數據爲生成曲線上的最高點。有關該行爲的示例,請參閱此answer

'csape'提供了足夠的最終條件,但我無法確定它是否具有足夠的形狀保持能力。

回答

0

我已經發布了我的問題在數學堆棧交換,得到了以下answer。本質上,我可以使用Fritsch-Carlson方案來計算/設置我的數據點的斜率。如果我想將斜率設置到中間點,我會將其間隔分爲兩部分,就像Bill Cheatham所建議的那樣。

我也可以包裹我的數據,並使用pchip或樣條曲線來應用,而不是重新實現整個方法。

0

如果您的數據只有這三點,您可以分兩個階段完成,一個用於上半場,另一個用於下半場。您可以使用這樣一個事實,即在離弦線最遠的位置(中點),該線的梯度將爲零。

生成每條線作爲兩點之間的樣條線,每條線以指定角度。

X = [0 5 10]; 
Y = [0 3 2]; 
start_slope = 0; 
end_slope = -0.7; 

xx1 = linspace(X(1), X(2), 100); 
xx2 = linspace(X(2), X(3), 100); 
yy1 = spline(X(1:2), [start_slope, Y(1:2), 0], xx1); 
yy2 = spline(X(2:3), [0, Y(2:3), end_slope], xx2); 

plot([xx1, xx2], [yy1, yy2]); 
hold on 
scatter(X, Y, 'filled') 

enter image description here

+0

謝謝,這幾乎正是我需要的。你將如何在絃線上產生偶數個均勻間隔的點? (當然沒有中間點重複) – 2012-01-30 16:45:43

+0

上面例子中的數字100是該行每一段產生的點數。如果你的中間點不是死亡中心,你可能需要在空間中進行遊戲,以便按比例分配兩部分之間的比例。最後,從yy2中刪除第一個要點以擺脫重複。 – 2012-01-30 16:49:21

+0

哎呀!樣條超調。在你的圖表上,在6左右,y軸的值大於「最高點」的值。此外,興趣點,軸可以是和絃。含義Y = [0 3 0]。 – 2012-01-30 16:56:31