2017-03-19 2 views
1

私は、完全な数の集合をカバーする複数の行列を達成しようとしています。たとえば、1から20までのすべての数値をカバーする長さ10の5つの行列を生成したいとします。可能なすべての数値を含む行列を生成する

だから、これは2つだけの行列ではない5と私の条件を満たしているものの、マトリックス2が

m2 = [11 12 13 14 15 16 17 18 19 20]; 

が含まれていながら、

m1 = [1 2 3 4 5 6 7 8 9 10]; 

を言って、私は、好ましくは、すべての行列を生成する必要がある1つの半分の数字が含まれていますマトリックス無作為に。ランダムに行列を生成し、すべての値をチェックする以外に、これを行うためのより効率的な方法がありますか?

答えて

1

あなたはそのようにそれを行うことができます。

>> l=[1:20,randi(20,1,30)]; 
>> vec=l(randperm(length(l))); 
>> v=reshape(vec,5,10); 

最初の行は、それは、それぞれ、そのような数が少なくとも一度表示されていることを保証し20に1から50個の数字の配列を生成します。 2行目は数字の順序をランダム化します。 3行目は、ベクトルを配列の配列(つまり、各行が配列の1つである2次元行列)に再整形します。

+0

ああ、これは私が達成しようとしているものに非常に近いです。唯一の違いは、繰り返しの入力を許可したいということです。混乱して申し訳ありません。私はちょうど私がどのようにrandperm/reshapeを適用することができると思うのですか? – JS60

+0

基本的に、長さ10の5つのベクトルを作成したいと思います。 –

+0

はい、それぞれ1〜20の可能なエントリが含まれていますが、少なくとも1-20の1つのオカレンスが必要です – JS60

関連する問題