我有一個矩陣A,其維數爲m X n。對於每一列i(i > 0
和i <= n
)我想翻轉硬幣並用概率p填充整個列中的0個值。這怎麼能在MATLAB中完成?將列設置爲0,概率爲p
例如:
A = [1 2 3 4; 5 6 7 8]和p = 0.5可能導致 A'= [1 0 3 0; 5 0 7 0]
我有一個矩陣A,其維數爲m X n。對於每一列i(i > 0
和i <= n
)我想翻轉硬幣並用概率p填充整個列中的0個值。這怎麼能在MATLAB中完成?將列設置爲0,概率爲p
例如:
A = [1 2 3 4; 5 6 7 8]和p = 0.5可能導致 A'= [1 0 3 0; 5 0 7 0]
可以使用函數rand()來生成均勻分佈的隨機數的數組,並使用邏輯索引,以選擇colums其中該陣列爲小於p:
A = [1 2 3 4; 5 6 7 8];
p = 0.5;
A(:, rand(size(A,2), 1)<p) = 0
A =
0 2 0 0
0 6 0 0
您可以做一些像bsxfun(@times, A, rand(1, size(A, 2)) > p)
。不過,亞歷克斯的答案當然更好。