2016-06-23 6 views
0

У меня есть две матрицы, у первой есть вероятность, а у второго есть значения мощности, соответствующие каждой вероятности, и у обоих есть 1 строки и 100 столбцов. Теперь я хочу сгенерировать 10000 случайных чисел между 0-1, которые сравниваются с вероятностью и если удовлетворяют определенному условию, следует дать вывод из соответствующей матрицы мощности. Я написал код, но получаю ошибку «размер матрицы должен соглашаться». Может ли кто-нибудь сообщить мне ошибку шляпы, которую я делаю здесь.Генерация случайных чисел для сравнения с каждым элементом матрицы и данным выходом через соответствующую матрицу в matlab

a=rand(1,10000); 
for q=1:1:99 
    praq=pr(1:1:99); 
    pwaq=pw(1:1:99); 
end 
if a<praq 
    pwaq 
else if a>=praq and a<praq+1 
     pwaq+1; 
    end 
end 
exit 

Где pra - вероятность, pwa - сила. Я хочу проверить, не является ли случайное число, то есть a, меньше первого элемента правы, оно должно давать результат из 1-го элемента pwa. если нет, он должен проверить второй элемент пра и так далее до 100-го элемента. Эту процедуру следует повторить 10000 раз.

+0

Попробуйте добавить период для типов. Часто это помогает: 'praq = pr. (1: 1: 99)' – cdomination

+0

@ChristinaDocenko Вы уверены, что это действительный синтаксис MATLAB? Что он должен делать? – beaker

+0

Обычно я получаю эту ошибку при умножении на разные длины. Итак, скажите, что * b даст мне ошибку, способ исправить это был. * B ... Я не совсем уверен, что он делает, но это помогло мне в этом случае. – cdomination

ответ

0

У вас есть несколько проблем здесь:

for q=1:1:99 praq=pr(1:1:99); pwaq=pw(1:1:99); end

Этот цикл не делает ничего, вы переназначение то же значение praq и pwaq снова и снова.

if a<praq

Это утверждение работает только если a и praq скаляры, но a вектор с длиной 10000 и praq вектор с длиной 99.

Вам нужно сделать что-то вроде

for rand_idx = 1:length(a) if a(rand_idx) < praq(<something>) ... end

Однако для достижения вашей цели, вместо использования if x < y Я бы рекомендовал посмотреть функции find и isempty.