2015-04-10 4 views
3

Есть ли способ в Matlab для создания матрицы 5000 х 1000 случайных чисел, в котором:Генерация случайной матрицы в Matlab

MM = betarnd(A,B,1,1000); 

, но А и В являются векторами (1 х 5000). Я получаю следующее сообщение об ошибке:

??? Error using ==> betarnd at 29 
Size information is inconsistent. 

Я хочу, чтобы избежать петли подобно следующему:

for ii = 1 : 1000 
    MM(:,ii) = betarnd(A,B); 
end 

Спасибо!

+0

Есть ли конкретная необходимость в использовании А и В, как 1x5000 массивы? – madbitloman

+0

@madbitloman Я предполагаю, что существует 5000 различных значений –

+0

С вашего кода я думаю, что вы хотите матрицу 1000x5000, а не 5000x1000. Правильно? –

ответ

1

Вы можете повторить A и B (векторы размера 1x5000) для получения матриц размера 1000x5000, в которых все строки равны, и использовать эти матрицы в качестве входных данных для betarnd. Таким образом, вы получите результат размером 1000x5000, в котором столбец k содержит 1000 случайных значений с параметрами A(k) и B(k).

Причина заключается в том, что, в соответствии с documentation (курсив):

R = betarnd(A,B) возвращает массив случайных чисел, выбранных из распределения бета с параметрами A и B. Размер R является общим размером A и B, если оба являются массивами.

Таким образом, использование

MM = betarnd(repmat(A(:).',1000,1), repmat(B(:).',1000,1)); 
+0

приятный и чистый. Спасибо, Луис! –

+0

@OliverAmundsen Отлично! Я не был уверен, что это было то, что вам нужно –