フィルターのクリア

make some matrices from one matrix without repeating the same numbers

1 回表示 (過去 30 日間)
fatema saba
fatema saba 2015 年 11 月 4 日
編集済み: Thorsten 2015 年 11 月 6 日
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?

採用された回答

Thorsten
Thorsten 2015 年 11 月 4 日
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 件のコメント
fatema saba
fatema saba 2015 年 11 月 6 日
Thank you Thorsten, however is it possible to vectorise this code and concise it?
Thorsten
Thorsten 2015 年 11 月 6 日
編集済み: Thorsten 2015 年 11 月 6 日
That's possible:
R = randperm(1000);
A = reshape(R, 200, [])';

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by