Hello
please.
this is my simple code that create (3*3) random matrix that all elements are 0 or 1.
a=randi([0,1],[500,500])
but is there any way that I define the number of elements that are 1. for example number of elements that are 1 be 7000 or in other word summation of matrix "a" be 7000
Thank you.

 採用された回答

Matt J
Matt J 2015 年 1 月 15 日
編集済み: Matt J 2015 年 1 月 15 日

0 投票

For older versions of MATLAB without the randperm(n,k) syntax enabled,
n=500^2;
m=7000;
idx=randperm(n);
z=[ones(1,m), zeros(1,n-m)];
a=reshape(z(idx),500,500);

1 件のコメント

fatema saba
fatema saba 2015 年 1 月 15 日
Thank you Matt and Adam. it is splendid

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

その他の回答 (1 件)

Adam
Adam 2015 年 1 月 15 日
編集済み: Adam 2015 年 1 月 15 日

2 投票

You can just create 7000 random indices instead and place the 1s at those indices
e.g. if you have a [500,500] matrix you have 250000 indices so create 7000 random indices from 1 to 250000 and then just assign 1s to all those indices of a 500 x 500 matrix.

2 件のコメント

Mohammad Abouali
Mohammad Abouali 2015 年 1 月 15 日
just change "... so create 70 random indices ..." to "... so create 7000 random indices ..."
Matt J
Matt J 2015 年 1 月 15 日
編集済み: Matt J 2015 年 1 月 15 日
+1. This is really the way to go with a current MATLAB version.

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

カテゴリ

ヘルプ センター および File ExchangeLinear Algebra についてさらに検索

タグ

質問済み:

2015 年 1 月 15 日

編集済み:

2015 年 1 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by