Replace all instances of a value with random number

4 Ansichten (letzte 30 Tage)
ME
ME am 2 Jan. 2020
Kommentiert: ME am 2 Jan. 2020
I am currently trying to replace all instances of the value 1 in an array with a different random number.
For example, if I have
A = [1 0 1 0;
0 1 0 0;
1 0 0 0;
1 1 0 1];
then I want a simple piece of code to quickly get something like:
A = 0.7144 0 0.1217 0;
0 0.9840 0 0;
0.5931 0 0 0;
0.2695 0.4320 0 0.9305];
I have tried using A(A==1)=rand but that filled in all of the 1s with th same random number.
I know this would be really easy to do using for loops but I am keen to avoid this because the A array will get quite large and end up being a drag on the performance of the overall script.

Akzeptierte Antwort

Jeremy
Jeremy am 2 Jan. 2020
A = [0 1 0 1; 1 0 1 1; 0 0 1 1];
id = A==1;
r = rand(1,nnz(id));
A(id) = r;

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by