A question about matrix

5 visualizzazioni (ultimi 30 giorni)
Johnny
Johnny il 8 Dic 2019
Commentato: Johnny il 8 Dic 2019
By following codes, I get a 50x50 matrics with randon 1 and 0. Now I want to specify how many 1 and how many 0 are in this 50x50 matrics, and I want them in randon positions.
Thank you very much for your helps!
nside=50;
randworld=round(rand(nside,nside));
world=randworld>.5;

Risposta accettata

Image Analyst
Image Analyst il 8 Dic 2019
Use randperm:
nside=50;
world = zeros(nside, nside);
num1sToInsert = 4;
randomIndexes = randperm(numel(world), num1sToInsert)
world(randomIndexes) = 1
  4 Commenti
Image Analyst
Image Analyst il 8 Dic 2019
Modificato: Image Analyst il 8 Dic 2019
Johnny, recall you said "I want to specify how many 1 and how many 0 are", and if you look in the documentation for randperm, the second argument is the number of numbers you want to get and assign 1 to. For example if you have 50-by-50 matrix, then there are 2500 elements in that matrix. So randperm will get a scrambled array of every index from the upper left (index 1) to the lower right (index 2500) - basically all numbers from 1 to 2500 scrambled up, if you don't specify the second argument. If you DO specify a second argument, then it won't return all 2500 - we don't need all 2500 - it will return however many you ask for in the second argument. So let's say you wanted to have 4 1's and 2496 0's. Well
randomIndexes = randperm(numel(world), num1sToInsert)
will return exactly 4 indexes randomly located somewhere within those 2500 elements. This is basically the same as
randomIndexes = randperm(2500, 4) % Return 4 numbers chosen randomly between 1 and 2500.
Then I use those indexes to set the matrix at those indexes to 1.
Johnny
Johnny il 8 Dic 2019
Thank you very much!it is very clear!
Really appreciate for your helps!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by