今天只是一个简单的问题。如果我有一个m * n矩阵,我想循环遍历其中的每个值并应用基于概率的函数。
基本上,如果概率是p,那么矩阵中的每个值都有可能将函数应用于它。
我有循环和功能本身都已解决,但我还没有找到如何实际应用概率本身。
任何建议都将不胜感激!提前谢谢。
答案 0 :(得分:3)
这是您的数据矩阵:
>> 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
答案 1 :(得分:1)
因此,我建议将您的函数应用于每个单元格,然后根据某些概率将值设置为默认值。因此,假设M是将函数应用于每个单元格的结果:
default = NaN % Or 0 or whatever
p = 0.8;
M(rand(size(M)) > p) = default;
我认为你可能不得不重塑这个......不确定
M = reshape(M, m, n);
答案 2 :(得分:1)
诀窍是你可以先生成随机数,然后应用其他公式。
例如:
R = rand(m,n) < p
现在R(row,col)
的每个值都对应于处理原始matrix(row,col)
所需的结果。