すべての行に要素1〜100が含まれる100x100マトリックスを作成したいとしましょう
A = [1:100; 1:100; 1:100... n]
1:100 の範囲の行を 100 行作成する必要があるため、マトリックスを作成することは明らかに悪い考えです。
「ones」配列を取り、すべての行にベクトルを掛けることでできると思います...しかし、どうすればよいかわかりません
a = (ones(100,100))*([])
??
任意のヒント?
繰り返しマトリックス機能 ( )を使用できますrepmat()
。コードは次のようになります。
A = repmat( 1:100, 100, 1 );
repmat
これは、最初の引数を垂直方向に 100 回、水平方向に 1 回繰り返すことを意味します(つまり、水平方向はそのままにしておきます)。
1001
の列ベクトルに の行ベクトルを掛けることができます1:100
。
ones(3,1)*(1:3)
ans =
1 2 3
1 2 3
1 2 3
repmat
または、 ([編集] Phonon が私の数秒前に書いたように [/編集])を使用することもできます。
はい、repmat は簡単なソリューションであり、間違いなく正しいソリューションです。しかし、目的を視覚化する方法と、その目的をもたらすものを作成する方法を知ることは、MATLAB で長期的なメリットをもたらします。したがって、他の解決策を試してください。例えば...
cumsum(ones(100),2)
bsxfun(@plus,zeros(100,1),1:100)
ones(100,1)*(1:100)
cell2mat(repmat({1:100},100,1))
そして退屈
repmat(1:100,100,1)