Filter löschen
Filter löschen

I want to create a random matrix?

1 Ansicht (letzte 30 Tage)
Pham
Pham am 29 Dez. 2013
Kommentiert: Pham am 30 Dez. 2013
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 Kommentare
Pham
Pham am 29 Dez. 2013
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 am 29 Dez. 2013
you can help me

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Amit
Amit am 29 Dez. 2013
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 Kommentare
Pham
Pham am 29 Dez. 2013
OK. Thanh you very much!
Pham
Pham am 30 Dez. 2013
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Amit
Amit am 29 Dez. 2013
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 Kommentare
Amit
Amit am 29 Dez. 2013
does b, c and d have any correlation? like in the example case, you have b=c+1, d=c+1
Pham
Pham am 29 Dez. 2013
b, c and d are any integers

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by