我有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'。 –