A question about matrix

1 vue (au cours des 30 derniers jours)
Johnny
Johnny le 8 Déc 2019
Commenté : Johnny le 8 Déc 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;

Réponse acceptée

Image Analyst
Image Analyst le 8 Déc 2019
Use randperm:
nside=50;
world = zeros(nside, nside);
num1sToInsert = 4;
randomIndexes = randperm(numel(world), num1sToInsert)
world(randomIndexes) = 1
  4 commentaires
Image Analyst
Image Analyst le 8 Déc 2019
Modifié(e) : Image Analyst le 8 Déc 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 le 8 Déc 2019
Thank you very much!it is very clear!
Really appreciate for your helps!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by