7

Matlab で特定のランク (ピボット列の数) を持つ nxn 行列をどのように生成できるのか疑問に思っています。このコマンドを使用して、1 から IMAX までのランダムなエントリを持つ mxn マトリックスを生成できることは知っていますがrandi(IMAX, m, n)、たとえば、ランダムなエントリを持ち、ピボット列が 2 つしかない 4 x 4 マトリックスを生成することは可能ですか? 前もって感謝します。

4

3 に答える 3

8

randi(IMAX, m, n)はできるだけ多くのピボット列を持つ mxn マトリックスを形成するため、次のコードを使用して、k 個のピボット列と 1 から IMAX までのランダムなエントリを持つ nxn マトリックス A を形成できることに気付きました。

A = randi(IMAX, n, k)*randi(IMAX, k, n)

randi(IMAX, n, k)とのそれぞれにrandi(IMAX, k, n)はピボット列しかないkため、製品にもピボット列が k 個しかないためです。

于 2012-12-03T17:48:10.403 に答える
1

1つの(明らかに非効率的な)方法は、完全な行列(例では4x4)を生成し、SVD分解を使用してそれを分離し、特異値の一部をゼロにすることです(この場合は2つのエントリ)。再構成されたマトリックスには望ましいランクがあると思います。

于 2012-12-03T21:04:57.630 に答える
1

または、生成された行列の特異値を制御することに関心がある場合は、テスト行列ギャラリーの randSVD 関数を使用できます: (リンク)

于 2012-12-05T22:58:14.527 に答える