フィルターのクリア

I want to create a random matrix?

1 回表示 (過去 30 日間)
Pham
Pham 2013 年 12 月 29 日
コメント済み: Pham 2013 年 12 月 30 日
Help me!
I want to create a random matrix HM (3,5), it satisfies the following conditions:
1. The value of HM is a nonnegative integer from 0 to 4.
2. The total value of the elements in a row is less than or equal to 5.
Thank you very much!
  3 件のコメント
Pham
Pham 2013 年 12 月 29 日
Ok, sorry. a nonnegative integer from 0 to 4 with the total value of the elements in a row is less than or equal to 6.
Pham
Pham 2013 年 12 月 29 日
you can help me

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

採用された回答

Amit
Amit 2013 年 12 月 29 日
okay .. an approach would be rejection method .. be careful .. for extremely large matrix this will be a bad idea .. tmp1= randi([0 c],a*100,b); tmp1=tmp1(sum(tmp1,2)<=d); HM=tmp1(1:a,:);
  6 件のコメント
Pham
Pham 2013 年 12 月 29 日
OK. Thanh you very much!
Pham
Pham 2013 年 12 月 30 日
Hello
The code above has the following disadvantages: When b is large and d is small, the matrix tmp1 to satisfy the conditions will be the number of rows <a. So HM matrix will fail. For example:
tmp1= randi([0 3],5*10000,50);
tmp1=tmp1(sum(tmp1,2)<=10,:);
HM=tmp1(1:5,:)
It will error: Index exceeds matrix dimensions.
Are you using the loop, you can just help me. Thanks.

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

その他の回答 (1 件)

Amit
Amit 2013 年 12 月 29 日
write down all possible ways to get 3 or less than 3 using integers 0-4 like [1 0 0 0 0] [1 1 0 0 0] etc.... pick one of the matrix for each row (randomly) and then use randperm to reorder them.
  13 件のコメント
Amit
Amit 2013 年 12 月 29 日
does b, c and d have any correlation? like in the example case, you have b=c+1, d=c+1
Pham
Pham 2013 年 12 月 29 日
b, c and d are any integers

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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by