3

すべての行に要素1〜100が含まれる100x100マトリックスを作成したいとしましょう

A = [1:100; 1:100; 1:100... n]

1:100 の範囲の行を 100 行作成する必要があるため、マトリックスを作成することは明らかに悪い考えです。

「ones」配列を取り、すべての行にベクトルを掛けることでできると思います...しかし、どうすればよいかわかりません

a = (ones(100,100))*([])

??

任意のヒント?

4

3 に答える 3

5

繰り返しマトリックス機能 ( )を使用できますrepmat()。コードは次のようになります。

A = repmat( 1:100, 100, 1 );

repmatこれは、最初の引数を垂直方向に 100 回、水平方向に 1 回繰り返すことを意味します(つまり、水平方向はそのままにしておきます)。

于 2012-05-06T21:44:05.757 に答える
5

1001の列ベクトルに の行ベクトルを掛けることができます1:100

ones(3,1)*(1:3)
ans =

   1   2   3 
   1   2   3
   1   2   3

repmatまたは、 ([編集] Phonon が私の数秒前に書いたように [/編集])を使用することもできます。

于 2012-05-06T21:44:13.057 に答える
2

はい、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)
于 2012-05-07T11:02:42.860 に答える