今天只是一个简单的问题。如果我有一个 m*n 矩阵,并且我想循环遍历其中的每个值并应用基于概率的函数。
基本上,如果概率是 p,那么矩阵中的每个值都有 p 机会应用函数。
我已经完成了循环和函数本身,但我还没有找到如何实际应用概率本身。
任何建议将不胜感激!提前致谢。
今天只是一个简单的问题。如果我有一个 m*n 矩阵,并且我想循环遍历其中的每个值并应用基于概率的函数。
基本上,如果概率是 p,那么矩阵中的每个值都有 p 机会应用函数。
我已经完成了循环和函数本身,但我还没有找到如何实际应用概率本身。
任何建议将不胜感激!提前致谢。
这是您的数据矩阵:
>> X = reshape(1:9, 3, 3);
并且您希望(可能)将以下函数应用于每个元素(注意我如何对其进行矢量化,以便它可以将矩阵作为参数)
>> f = @(x) x.^2;
您想应用概率为p的函数
>> p = 0.25;
所以生成一些0到1之间的随机数,看看哪些小于p
>> idx = rand(3,3) < p;
现在将该函数应用于相关索引
>> X(idx) = f(X(idx));
这是你的结果:
>> X
X =
1 16 7
2 5 64
3 6 81
因此,我建议将您的函数应用于每个单元格,然后根据某些概率将值设置为默认值。所以让我们假设 M 是应用到每个单元的函数的结果:
default = NaN % Or 0 or whatever
p = 0.8;
M(rand(size(M)) > p) = default;
我想你可能不得不在这之后重塑 m ......不确定
M = reshape(M, m, n);
诀窍是您可以先生成随机数,然后再应用其他公式。
例如:
R = rand(m,n) < p
现在 的每个值R(row,col)
对应于您需要处理原始 的结果matrix(row,col)
。