2013-11-25 3 views
-4

Я новичок в Matlab, и я пытаюсь создать двумерные случайные числа, основанные на гауссовском (нормальном) распределении и равномерном распределении. предположим, что я хочу создать 2 разных набора данных (гауссовские (1800 пар) и униформные (1200 пар)), которые будут использоваться для задач/алгоритмов Data mining/over-fitting in two-data data.Создание случайных двумерных точек в Matlab

Другой важной проблемой является то, что точки данных должны находиться в диапазоне 0-20.

Я попытался это для гауссова распределения

SIGMA = [.5 .05; .05 .5 ]; 
temp = mvnrnd([-3 0], SIGMA,1800); 

эти коды генерирует числа от -5 до 5, и я хочу, чтобы генерировать 0-20, так что я пытался

SIGMA = [0 20]; 

но я получить диапазон от -20 до 20

Как я могу получить диапазон 0-20?

+2

что вы устали до сих пор? вы заглянули в «rand» и «randn»? показать нам некоторый код ... – Shai

+1

Гауссовские случайные величины не имеют жестких границ. Крайние значения маловероятны. Лучшее, что вы можете сделать, это компенсировать среднее значение, которое контролируется первым аргументом mvnrnd. Попробуйте [10 10]. – Peter

+0

'mvnrnd' не является нормальным дистрибутивом (если вы не можете выбрать правильные параметры для специального случая). Вместо этого используйте 'randn'. – Daniel

ответ

3
Gaussian_r=10+(10/3)*randn(1800,1) 

Здесь я использовал правило 3 сигм, где 99,7% случайных величин будет падать между средним - сигма означает + 3 сигма, что означает, что есть еще 0,3%, что может выходить за пределы области вы указали, если это не достаточно хорошо для вас, вы можете сделать сигма меньше

Uniform_r = 20*rand(1200,1) 

, если вы хотите, чтобы они были целыми числами использовать Randi вместо

проверка randnrandirand

1

Равномерный: г = Randi (20,2,1200)

гауссовые: Функции randn представляет собой гауссово распределение со стандартным отклонением (сигма) = 1 и означают (MU) = 0. Реальное нормальное распределение не ограничивается интервалом, просто уменьшается вероятность событий, когда вы становитесь дальше от среднего. По мере увеличения размера выборки вероятность получения экстремальной ценности возрастает. Предполагая, что вы хотите, чтобы ваше распределение было сосредоточено (в среднем) около 10, вы можете выбрать подходящую небольшую сигму, чтобы сделать извержение в 1800 образцах очень маловероятным, а затем убедитесь, что это не происходит с условным.

Если вы находитесь в пределах 6sigma с 3600 образцами, вероятность того, что образец находится снаружи, очень мал (7.1e-4% вы можете видеть это в MATLAB с 1-erf (6/sqrt (2))^3600). Таким образом, одна разумная сигма может составлять 10/6 (1.6667). Это дает нам:

r = 10 + 1.6667 * randn (2,1800) % на всякий случай r (r> 20) = 20; r (r < 0) = 0;

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

Смежные вопросы