Azzera filtri
Azzera filtri

make some matrices from one matrix without repeating the same numbers

1 visualizzazione (ultimi 30 giorni)
Hi I have matrix A
A=[1:1000]
I randomly made matrix B on the basis of 20 percent of (numel(A)) like that:
B= randi(1000,[1 200])
then I calculate difference between this two matrix and named it sdB.
sdB=setdiff(A,B)
now I want to determine matrix C on the basis of 20 percent of (numel(A) (it means 200 numbers) from matrix sdB. Then calculate difference between matrix B and C (or sdC). this process must be continue until in sum all 1000 numbers are determined. Is it possible to guide me please?

Risposta accettata

Thorsten
Thorsten il 4 Nov 2015
Using B= randi(1000,[1 200]) you don't get 200 unique numbers. If your goal is to split the numbers from 1 to 1000 in random order into 5 chunks of 200 numbers, use
R = randperm(1000);
for i = 1:5
A(i,:) = R([1:200]+(i-1)*200);
end
A(i,:) is then your i'th set of 200 numbers randomly picked from 1000, but without repetitions.
  2 Commenti
fatema saba
fatema saba il 6 Nov 2015
Thank you Thorsten, however is it possible to vectorise this code and concise it?
Thorsten
Thorsten il 6 Nov 2015
Modificato: Thorsten il 6 Nov 2015
That's possible:
R = randperm(1000);
A = reshape(R, 200, [])';

Accedi per commentare.

Più risposte (0)

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by