Генерация случайного шума в Matlab - PullRequest
0 голосов
/ 26 июля 2010

Когда я добавляю гауссов шум в массив, разве гистограмма не должна быть гауссовой? Хотя шум случайный, распределение должно быть гауссовским, верно? Это не то, что я получаю.

A=zeros(10);
A=imnoise(A,'gaussian');
imhist(A)

Ответы [ 4 ]

1 голос
/ 26 июля 2010

Вот что делает ваш код:

A = zeros(10);

mu = 0; sd = 0.1;                 %# mean, std dev
B = A + randn(size(A))*sd + mu;   %# add gaussian noise

B = max(0,min(B,1));              %# make sure that 0 <= B <= 1

imhist(B)                         %# intensities histogram

Вы видите, в чем проблема?(Подсказка: RANDN возвращает число ~N(0,1), поэтому полученный добавленный шум равен ~N(mu,sd))


Возможно, вы пытаетесь сделать следующее:

hist( randn(1000,1) )

histogram

1 голос
/ 26 июля 2010

Может происходить две вещи:

  1. Вам не хватает размера выборки, или

  2. Среднее значение imnoise с гауссовым распределением по умолчанию равно 0, что означает, что вы видите только правую половину кривой колокола.

Попробуйте

imhist(imnoise(zeros(1000), 'gaussian', 0.5));
0 голосов
/ 26 июля 2010

Возможно, вы не увидите колокольчик с рамкой выборки только 10.

См. Центральную предельную теорему.

http://en.wikipedia.org/wiki/Central_limit_theorem

Я бы попробовал увеличить кадр выборки до чего-то гораздо большего.


Ссылки

Закон больших чисел

http://en.wikipedia.org/wiki/Law_of_large_numbers

0 голосов
/ 26 июля 2010

imnoise () - это функция, которая может применяться к изображениям , а не к простым массивам. Возможно, вместо этого вы можете посмотреть на функцию randn ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...