今天只是一個簡單的問題。如果我有一個m * n矩陣,並且我想循環其中的每個值並應用基於概率的函數。如何將概率應用於MATLAB中的單元格?
基本上,如果概率是p,那麼矩陣中的每個值都具有應用該函數的p機會。
我有循環和函數本身所有的工作,但我還沒有找到如何實際應用概率本身。
任何意見將不勝感激!提前致謝。
今天只是一個簡單的問題。如果我有一個m * n矩陣,並且我想循環其中的每個值並應用基於概率的函數。如何將概率應用於MATLAB中的單元格?
基本上,如果概率是p,那麼矩陣中的每個值都具有應用該函數的p機會。
我有循環和函數本身所有的工作,但我還沒有找到如何實際應用概率本身。
任何意見將不勝感激!提前致謝。
的技巧是,你可以生成首先是隨機數,然後應用其他公式。
例如:
R = rand(m,n) < p
現在的R(row,col)
每個值對應於你需要處理你原來matrix(row,col)
結果。
所以我建議將你的函數應用到每個單元格,然後根據一些概率將值設置爲默認值。所以,讓我們假設M是將工作以everycell結果:
default = NaN % Or 0 or whatever
p = 0.8;
M(rand(size(M)) > p) = default;
我想你可能在這之後,以重塑米...不知道
M = reshape(M, m, n);
非常感謝你:) – Kadin 2013-05-10 23:51:48
這是你的數據矩陣:
>> 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
非常感謝你:) – Kadin 2013-05-10 23:51:16
非常感謝:)這工作相當好! – Kadin 2013-05-10 23:50:16