0

今日は簡単な質問です。m*n 行列があり、その中のすべての値を循環させて、確率ベースの関数を適用したい場合。

基本的に、確率が p の場合、行列の各値に関数が適用される可能性は p です。

ループと関数自体はすべてうまくいきましたが、実際に確率自体を適用する方法が見つかりませんでした。

どんなアドバイスでも大歓迎です!前もって感謝します。

4

3 に答える 3

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
于 2013-05-10T12:19:10.423 に答える
1

したがって、関数をすべてのセルに適用し、確率に基づいて値をデフォルト値に設定することをお勧めします。したがって、M が関数をすべてのセルに適用した結果であると仮定しましょう。

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

この後、m を再形成する必要があるかもしれないと思います...よくわかりません

M = reshape(M, m, n);
于 2013-05-10T11:47:33.297 に答える