Il s'agit d'une question très spécifique; donc je vous dis juste ce que j'ai affaire:Ajout de bruit aux éléments de la matrice avec une valeur spécifique
J'ai une matrice géante avec 2 colonnes - la colonne 1 se réfère à l'heure, la colonne 2 à une concentration de la molécule. Le signal de la molécule est artificiel, c'est pourquoi la ligne de base est plate (image). En réalité, il devrait être légèrement bruyant
Par conséquent, je voudrais ajouter du bruit sur une distribution normale; J'ai fait quantifier les éléments qui ont cette valeur de référence:
numb=length(App[,2][App[,2]==min(App[,2])])
noise=rnorm(numb)
Je me bats maintenant avec l'ajout de ce bruit aléatoire aux éléments
App[,2]==min(App[,2])
J'ai essayé une si boucle:
if(App[,2]==min(App[,2])) {
App[,2]=App[,2]=+noise
}
mais pour une raison quelconque, cela ne fonctionne pas. (Erreur "Dans si (App [, 1] == min (App [, 1])) {: la condition a la longueur> 1 et seul le premier élément sera utilisé)
Avez-vous un pourboire de ! me
Meilleurs voeux et merci beaucoup
Peut-être que App '[App [2] == min (App [2])], 2] = App [App [, 2] == min (App [, 2])], 2] + noise' –
Si nécessaire, voici une explication de l'erreur: 'App [, 1]' est un vecteur de longueur '> 1' (disons 'n'),' min (App [, 1]) 'est un vecteur de longueur' 1'. En comparant les deux vecteurs avec '==', ce qui est retourné (appelez-le 'ret') est un vecteur de longueur' n'. Comme 'if' ne sait pas quoi faire avec ce vecteur, il prend le premier élément donc si' App [1, 1] == min (App [, 1] 'est' true', la condition 'if' est Vous pouvez, cependant, utiliser 'ret' pour indexer' App' et continuer –