Объединение нескольких массивов вероятностей декартовым способом в Matlab

У меня есть пара векторов, где каждый объект обозначает значение вероятности. Например, рассмотрим следующее для векторов:

a=[0.7 0.3]
b=[0.1 0.9]

Рассмотрим a и b как векторы, показывающие вероятность. Например, a означает, что случайная величина будет равна 0 с вероятностью 0,7 и 1 с вероятностью 0,3. Точно так же b представляет другую случайную величину, которая будет равна 0 с вероятностью 0,1 и 1 с вероятностью 0,9.

Я хочу вычислить вектор c, где c отражает функцию массы вероятности суммы a и b, считая, что a и b независимы. В этом примере c должно быть

c=[0.07 0.66 0.27]

Другими словами, c=0, когда и a=0, и b=0, это происходит с вероятностью 0,7*0,1=0,07. c=1, когда либо a=0 и b=1, либо a=1 и b=0. Первое происходит с вероятностью 0,7*0,9=0,63, а второе происходит с вероятностью 0,3*0,1=0,03, поэтому сумма равна 0,63+0,03=0,66. Наконец, третья запись c соответствует случаю, когда и a, и b равны 1 с вероятностью 0,3*0,9=0,27.

Я хочу написать код для вычисления c. В моем приложении будет 30 таких a векторов длиной 100 каждый. Таким образом, масштабируемость определенно имеет значение.

Большое спасибо!


person emper    schedule 13.03.2014    source источник


Ответы (1)


Для вашего простого примера вы можете использовать conv

c=conv(a,b)

однако для вашего реального случая это будет сложнее. Вы можете повторно conv вектора вот так (если ваши a вектора являются строками A)

A=a(1,:);
for i=2:30
    A=conv(A,a(i,:));
end

(Примечание: этот код работает, но я не уверен, даст ли он правильные результаты --- это не та тема, в которой я много разбираюсь, так что будьте осторожны!)

person David    schedule 13.03.2014