将列设置为0,概率为p

时间:2012-02-07 20:44:41

标签: matlab statistics probability

我有一个矩阵 A ,尺寸为m X n。对于每一列i > 0i <= n),我想要翻转一个硬币并用概率为0的0值填充整个列。如何在MATLAB中完成?

示例:

A = [1 2 3 4; 5 6 7 8]和p = 0.5可能导致 A'= [1 0 3 0; 5 0 7 0]

2 个答案:

答案 0 :(得分:4)

您可以使用函数rand()生成均匀分布的随机数数组,并使用逻辑索引来选择该数组小于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

答案 1 :(得分:1)

您可以执行bsxfun(@times, A, rand(1, size(A, 2)) > p)之类的操作。不过,亚历克斯的答案肯定会更好。