2013-05-09 14 views
2

我有兩個樣條線,我已經生成了(修改的一部分)getcurve(),它們代表了軌跡的XYXZ。我想通過plot3()將兩個樣條線結合在一起生成一個3d圖。我修改了getcurve()以輸出繪製在繪圖上的線的XDataYData如何「拉伸」(插入)數組,但保持其基礎數據完好?

由於樣條線是以圖形方式生成的,因此XYXZ之間的元素數量不一定相同。假設length(XY)>length(XZ)。我正在嘗試創建一個新的矢量XZ_2,其長度與XY的長度相同,並具有與XY相同的x值。

我的第一個想法是插值如下:

XZ_2(:,2) = interp1(XZ(:,1), XZ(:,2), XY(:,1)) 

,但我得到一個錯誤:

Error using griddedInterpolant 
The grid vectors are not strictly monotonic increasing. 
Error in interp1 (line 191) 
    F = griddedInterpolant(X,V,method); 

花鍵XZ看起來是這樣的:

XZ spline

我不明白爲什麼我不能插入給定的這個樣條。它看起來不像什麼特別的東西。您可以通過重建做這個樣條自己以下(你需要的曲線擬合工具箱):

>> xz = [0.0288 0.0518 0.1071 0.1763 0.2707 0.3583 0.4988 0.5864 0.7339 0.8191 0.9182 0.9781 
     1.8070 1.3626 0.9766 0.4152 -0.0643 -0.3684 -0.9181 -1.1637 -1.4795 -1.6667 -1.8070 -1.9474]; 
>> fnplt(cscvn(xz)); 

有沒有一種方法來「調整」 XZ使用相同的x值作爲XY?我意識到當我這樣做時,關於XZ的一些信息將會丟失,但沒關係。

+0

難道你不能跳過這一點,並使用interp2直接進入3D嗎? – Dan 2013-05-09 21:41:48

+0

我可以嗎?我以爲'interp2'讓你在表面上插值。我不太明白我將如何使用它來生成曲線而不是曲面。 – 2013-05-09 22:25:12

+0

對不起,我雖然想將兩條曲線組合起來製作曲面 – Dan 2013-05-09 22:28:07

回答

3

它說在interp1(x, y, xi);,xxi必須單調遞增,即排序。

+0

是否必須增加?我認爲它必須單調或單調。儘管我想OP的情節對我來說是個問題。 – 2013-05-09 20:57:00

+1

'x'和'xi'必須增加,'y'不相關。考慮{x,y}作爲時間序列。 – Serg 2013-05-09 20:59:54

+1

我發現一個單獨的重複值。啊!使用MATLAB文件交換中的[Consolidator](http://www.mathworks.com/matlabcentral/fileexchange/8354)解決了這個問題。 – 2013-05-09 22:45:56

相關問題