我有n條曲線的集合,即這n條曲線中的每一條曲線的點(x,y)。我試圖繪製一條「合成曲線」或平均曲線。即,取每個x的'n'y座標的平均值並繪製結果。問題是n個曲線的xs不一樣。我知道我可能需要內插或其他東西,但是我找不到在線做的例程。有人知道某個r軟件包或Matlab代碼或C或C++代碼是否由某人執行?如果沒有,有什麼想法如何以聰明的方式進行插值?謝謝!!使用interp1
繪製一組曲線的「平均」曲線
0
A
回答
3
使用approx
進行線性插值的R解決方案。
首先,我創建一些數據(您質疑一個可重現的例子)。 這裏我創建一個列表,其中5 data.frame,用型動物的xs:
ll <- lapply(1:5,function(i)
data.frame(x=seq(i,length.out=10,by=i),y=rnorm(10)))
然後申請approx
,我創建一個包含所有數據的大data.frame:
big.df <- do.call(rbind,ll)
然後我繪製線性近似,我所有的系列:
plot(approx(big.df$x,big.df$y),type='l')
lapply(seq_along(ll),
function(i) points(ll[[i]]$x,ll[[i]]$y,col=i))
+1
謝謝!這正是我想要它做的。 – user1775614
1
Matlab的解決方案:
% X and Y data for two curves
x1 = -1:0.11:1;
x2 = -1:0.09:1;
y1 = x1.^2;
y2 = x2.^2;
% Assemble variable length (ragged) data into cell arrays
X = {x1;x2};
Y = {y1;y2};
% Vector of interpolated x coordinates
Xq = -1:0.1:1;
% Interpolate each curve to Xq and save in row of matrix Yq
N = length(X);
Yq(N,length(Xq)) = 0;
for i = 1:N
Yq(i,:) = interp1(X{i},Y{i},Xq);
end
% Display result
figure;
plot(Xq,Yq,'.-')
你可能會在interp1
提供的各種插值方法玩。如果您有R2012a或更新版本,請注意他interp1
功能will be changing a bit in the future。
+0
謝謝!解答我的問題! – user1775614
2
如果您在R中使用curve
函數,則可以將曲線的值分配給列表(使用< - )。這可以讓你平均你的曲線之後。
x <-runif(10)
plot(x, ylim=c(-5,5))
a <-curve(sin, add=TRUE, col="red")
b <-curve(cos, add=TRUE, col="blue")
xx <-(a$x+b$x)/2 # x average
yy <-(a$y+b$y)/2 # y average
lines(xx,yy, col="purple") #draw average curve
相關問題
- 1. 繪製平均曲線個gnuplot的
- 2. 繪製一條平均曲線的直線
- 3. 繪製平滑曲線
- 4. 繪製曲線
- 5. javascript canvas:用曲線繪製移動平均線
- 6. 繪製均勻的二次曲線
- 7. 計算平均曲線
- 8. 繪製曲線線android
- 9. SceneKit繪製曲線
- 10. 龜繪製曲線
- 11. 繪製NURBS曲線?
- 12. 如何繪製數組和曲線列表的曲線?
- 13. 繪圖R,曲線平滑
- 14. 用曲線繪製一條線
- 15. 從用戶繪製的柵格曲線製作矢量曲線
- 16. 通過一組n點繪製平滑曲線
- 17. 繪製最適合的曲線線
- 18. 繪製曲線SVG箭頭線的div
- 19. Matplotlib不繪製曲線
- 20. 在iPhone中繪製曲線?
- 21. 繪製折線圖彎曲
- 22. 在AndEngine中繪製曲線
- 23. 使用libgdx繪製曲線
- 24. 如何繪製與曲線
- 25. 繪製二次曲線
- 26. 繪製二次曲線
- 27. Ntlk&Python,繪製ROC曲線
- 28. AUC曲線繪製在python
- 29. 繪製法線到曲面
- 30. 使用Paraview繪製曲線
對於線性插值,可以使用'approx'。 –