2015-10-26 56 views
0

这是一个非常具体的问题;所以我只是告诉你我在处理什么:向具有特定值的矩阵元素添加噪音

我有一个巨大的矩阵2列 - 第1列是指时间,第2列的分子浓度。 分子信号是人造的,这就是为什么基线是平坦的(图片)。在现实中它应该有点嘈杂enter image description here

因此,我想增加一个正常分布的噪音; 其实我已经量化具有此基准值的元素:

numb=length(App[,2][App[,2]==min(App[,2])]) 
noise=rnorm(numb) 

我在加入这个随机噪声的元素

App[,2]==min(App[,2]) 

我尝试过的,如果环正挣扎

if(App[,2]==min(App[,2])) { 

    App[,2]=App[,2]=+noise 
    } 

但由于某种原因,它不起作用。 (错误“In if(App [,1] == min(App [,1])){: 条件长度> 1且仅使用第一个元素)

?!我

最良好的祝愿,并感谢

+0

也许这'程式[应用[2] ==分钟(应用[2]), 2] = App [App [,2] == min(App [,2])],2] + noise' –

+0

如果有必要,下面是错误的解释:App [,1]'是长度'> 1'(比如说'n'),'min(App [,1])'是一个长度为1的向量。当用'=='比较两个向量时,返回的结果(称为“ret”)是一个长度为“n”的向量。由于'if'不知道如何处理这个向量,所以如果'App [1,1] == min(App [,1]'是'true',则if'条件是满意,反之亦然,但是,你可以使用'ret'来索引'App'并继续。 –

回答

1

也许这可以帮助:

baseline.index = which(App[,2] == min(App[,2])) 
noise = rnorm(length ( baseline.index)) 
App[baseline.index,2] = App[baseline.index,2] + noise 
+0

非常感谢 - 这可以工作得很好:) - 不幸的是,它虽然看起来并不真实,但我只有一步更接近 – Arne

+0

@Arne整体观点是选择你想改变的点。在这种情况下,你在'baseline.index'中存储了那些标记。 2号线正在产生噪音,就像你一样。只是不使用条件,我使用了基线的indecies。最后,我要求R将噪声添加到仅具有基线的行中。如果这还不清楚,试着'print(baseline.index)','print(App [baseline.index,])' –

+0

是的,我意识到这一点:)只有噪音不符合现实的钙基线曲线,因为它切换到快速。但这本身就是一个问题。你的代码很可爱:)。 – Arne

相关问题