2012-04-10 96 views
0

我想找出一種方法來增加向量元素的數量,以便在繪製這些向量的值時去除可見的角效應。舉例來說,假設我有包含每10個元素的兩個向量:在R中增加向量分辨率

a = c(4,2,10,5,3,4,8,9,6,2) 
b = seq(0,4.5, by=0.5) 

他們受到數據平滑,但我想,以增加他們的「分辨率」比10(長度),以獲得更多的預測點。所以,換句話說,採用向量a,並在保持其一致性的同時加倍(例如)其元素的數量。將所得的載體應是這樣的:

a = c(4,3,2,6,10,7,5,4,3,4,6,8,8.5,9,7.5,6,4,2,2) 

。當然,在這種特殊情況下,我很容易計算的元件的平均成對。但我想有一個任意長度的廣義方法。我曾嘗試用:

seq(a[1],a[10], length.out=20) 

但當然,因爲只有向量的第一個和最後一個元素都採取了在考慮這個沒有做這項工作。它適用於第二個矢量b雖然(其中包含橫座標值)。 任何幫助,將不勝感激。謝謝。 Marius。

+0

您認爲「保持其一致性」意思不是很清楚嗎?只要符合最小值和最大值就可以了。 – Hansi 2012-04-10 12:15:19

+0

你可能喜歡'splinefun'或'approxfun' – 2012-04-10 12:28:35

+0

不,要得到任意兩個連續的向量元素* a *並且在它們之間再加上2或3或者任何均勻分佈的元素,但要尊重向量。例如,如果最初a [5] = 4和a [6] = 7和a [7] = 5,我在a [5]和a [6]之間以及a [6]和a [ 7]該矢量片應該是a1 [5] = 4; a1 [6] = 5,a1 [7] = 6,a1 [8] = 7,a1 [9] = 6.34,a1 [10] = 5.68,a1 [11] = 5,初始a [5] = a1 [5],a [6] = a1 [8]和a [7] = a1 [11] – Marius 2012-04-10 12:32:00

回答

2

你只是想要基於b序列的線性插值?

f <- approxfun(b, a) 
f(seq(b[1], b[length(b)], length = 20)) 
[1] 4.000000 3.052632 2.105263 5.368421 9.157895 8.157895 5.789474 4.368421 3.421053 3.263158 3.736842 4.842105 6.736842 8.157895 8.631579 8.684211 7.263158 5.789474 
[19] 3.894737 2.000000 

其他形式的內插,也?round以各種方式完善這個值見?approx其他的選擇及其See also

+0

不,我已經使用seq()函數獲得了線性插值,但是我的大部分數據都描述了一條二次曲線,這就是爲什麼我指定要保持向量的一致性。但我會看看大約一輪。 – Marius 2012-04-10 12:38:37

+0

您可能會驚訝地發現,只要使用默認設置即可很好地匹配數據或splinefun,特別是如果增加點數 - 不確定「一致性」是什麼意思。 – mdsumner 2012-04-10 12:53:14

+0

從我看到的approxfun做交易。感謝您的快速答覆。我也用splinefun,但我需要一個樣條函數的自定義行爲,這就是爲什麼我創建了自己的。再次,approxfun產生想要的結果。謝謝! – Marius 2012-04-10 12:56:49