How can i add 20% additive guassian noise to each and every element of vector

20 ビュー (過去 30 日間)
Fiaz Ahmad
Fiaz Ahmad 2016 年 5 月 14 日
回答済み: Bjorn Gustavsson 2016 年 5 月 14 日
Suppose i have a fixed value vector a=[1.05;0.2561;.3321]). I want to add 20% Gaussian noise to each value of this vector as follows:
a_with_noise=[a]+[20% Gaussian noise]=====> This should give me; a_with_noise=[1.05+noise;0.2561+noise;.3321+noise]
Here [a] should act as the mean of the Gaussian noise distribution.
Thanks

採用された回答

Image Analyst
Image Analyst 2016 年 5 月 14 日
There is a function called randn() that you must have overlooked when you were searching for "random" in the help. Use that. It gives noise with zero mean and unit standard deviation so you'll have to scale it:
% Define our signal - a column vector.
a=[1.05;0.2561;.3321]
% Make the spread of the Gaussians be 20% of the a values
sigmas = 0.2 * a % Also a column vector.
% Create the noise values that we'll add to a.
randomNoise = randn(length(a), 1) .* sigmas
% Add noise to a to make an output column vector.
output = a + randomNoise

その他の回答 (1 件)

Bjorn Gustavsson
Bjorn Gustavsson 2016 年 5 月 14 日
If I get you right this should do it:
function A_p_noise = addgaussiannoise(A,N2S)
A_p_noise = A.*(1+N2S*randn(size(A)));
HTH

カテゴリ

Help Center および File ExchangeRandom Number Generation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by