2015-10-26 59 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

相關問題