首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据是否在特定峰值匹配?

数据是否在特定峰值匹配?
EN

Stack Overflow用户
提问于 2020-03-25 13:51:29
回答 1查看 61关注 0票数 0

这可能更像是一道数学题,而不是一个R题。

是否有办法使数据在特定的点上匹配?

下面是一个例子:

代码语言:javascript
复制
peak_a<-c(0.1,0.4,0.6,0.8,0.9,1,0.9,0.8,0.6,0.4,0.1,0.05,0.04)
peak_b<-c(0.04,0.06,0.1,0.2,0.3,0.45,0.7,0.9,1.1,1.3,1.35,1.3,1.15,1,0.85,0.65,0.5)
abs<-c(peak_a,1.5*peak_b)
abs2<-c(1.5*peak_a,0.5*0.9*peak_b)
abs3<-c(0.9*peak_a,peak_b)
plot(abs, type="l")
lines(abs2,col="red")
lines(abs3,col="blue")

我希望所有三条曲线在A峰都有相同的高度,同时保持A峰和B峰之间的比值。在我的实际数据中,我有大约100光谱,每个峰有5个峰值。这些峰值总是在x轴值的相同范围内,我希望在保持所有这些峰值之间的正确比率的同时,对每个峰值重新确定它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-25 14:00:58

您可以在直线的某个点按比例缩放每一行,如下所示:

代码语言:javascript
复制
peak_a<-c(0.1,0.4,0.6,0.8,0.9,1,0.9,0.8,0.6,0.4,0.1,0.05,0.04)
peak_b<-c(0.04,0.06,0.1,0.2,0.3,0.45,0.7,0.9,1.1,1.3,1.35,1.3,1.15,1,0.85,0.65,0.5)
abs<-c(peak_a,1.5*peak_b)
abs2<-c(1.5*peak_a,0.5*0.9*peak_b)
abs3<-c(0.9*peak_a,peak_b)
plot(abs, type="l")
lines(abs2*abs[6]/abs2[6],col="red")
lines(abs3*abs[6]/abs3[6],col="blue")

一些来自您的曲线的实际数据可能有助于更好地解决您的需求。

下面是一种“自动化”过程的方法,因为您说您有许多曲线:

代码语言:javascript
复制
peak_a<-c(0.1,0.4,0.6,0.8,0.9,1,0.9,0.8,0.6,0.4,0.1,0.05,0.04)
peak_b<-c(0.04,0.06,0.1,0.2,0.3,0.45,0.7,0.9,1.1,1.3,1.35,1.3,1.15,1,0.85,0.65,0.5)
abs<-c(peak_a,1.5*peak_b)
abs2<-c(1.5*peak_a,0.5*0.9*peak_b)
abs3<-c(0.9*peak_a,peak_b)
abs4<-c(0.75*peak_a,peak_b)
abs5<-c(0.88*peak_a,peak_b)

plot(abs, type="l")

ListOfCurves <- sapply(2:5, function(x) paste0("abs",x))
AllCurves <- lapply(ListOfCurves, function(x) eval(parse(text=x)))
NormalizedCurves <- lapply(AllCurves, function (x) x*abs[6]/x[6])

lapply(1:4, function(x) lines(NormalizedCurves[[x]],col=x))

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60850264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档