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