Replace all instances of a value with random number

조회 수: 26 (최근 30일)
ME
ME 2020년 1월 2일
댓글: ME 2020년 1월 2일
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.

채택된 답변

Jeremy
Jeremy 2020년 1월 2일
A = [0 1 0 1; 1 0 1 1; 0 0 1 1];
id = A==1;
r = rand(1,nnz(id));
A(id) = r;

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by