Replace all instances of a value with random number

8 visualizaciones (últimos 30 días)
ME
ME el 2 de En. de 2020
Comentada: ME el 2 de En. de 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.

Respuesta aceptada

Jeremy
Jeremy el 2 de En. de 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;

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by