2013-05-10 74 views
0

今天只是一個簡單的問題。如果我有一個m * n矩陣,並且我想循環其中的每個值並應用基於概率的函數。如何將概率應用於MATLAB中的單元格?

基本上,如果概率是p,那麼矩陣中的每個值都具有應用該函數的p機會。

我有循環和函數本身所有的工作,但我還沒有找到如何實際應用概率本身。

任何意見將不勝感激!提前致謝。

回答

1

的技巧是,你可以生成首先是隨機數,然後應用其他公式。

例如:

R = rand(m,n) < p

現在的R(row,col)每個值對應於你需要處理你原來matrix(row,col)結果。

+0

非常感謝:)這工作相當好! – Kadin 2013-05-10 23:50:16

1

所以我建議將你的函數應用到每個單元格,然後根據一些概率將值設置爲默認值。所以,讓我們假設M是將工作以everycell結果:

default = NaN % Or 0 or whatever 
p = 0.8; 
M(rand(size(M)) > p) = default; 

我想你可能在這之後,以重塑米...不知道

M = reshape(M, m, n); 
+0

非常感謝你:) – Kadin 2013-05-10 23:51:48

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 
+0

非常感謝你:) – Kadin 2013-05-10 23:51:16

相關問題