0

いかなる種類のループも使用せずに行列を転置する方法。nxn の場合、対角要素をベースおよびシフト要素として作成できます。しかし、nxm 行列の場合、この解決策は実現不可能だと思います。

とにかく、読み取りまたは保存するには、ループを使用する必要があります...??

ループのない解決策..??

4

2 に答える 2

0

最初に行列の次元がわかっている場合は、ループは必要ありません。マトリックスの位置を交換して、マトリックス全体を転置できるからです。この最初の条件では、次元が mx n であってもループは必要ありません。

しかし、最初に行列の次元がわからない場合は、行列を反復して位置を読み取り、行列を転置する過程で別の位置にスワップするループが必要になります。

于 2013-01-21T03:03:45.297 に答える
0

転置行列全体を格納するには、必ずループを使用する必要があります。マトリックスを保存するにはループを使用するため、マトリックスのメンバーをループして保存する必要があるため、これは実際には大したことではありません。

読んでいるだけなら、行列転置の定義を使用して、インデックスを変換するだけです。たとえば、C では次のようになります。

int getTransposedElement(int i,int j, int** originalMatrix) {
  return originalMatrix[j,i];
}

クラスとポリモーフィズムのある言語を使用している場合は、これを自動的に行う新しいマトリックス クラスを作成できます。これには、元の行列のコピーを回避できるという追加の利点があります。これにより、メモリが節約され、転置行列への変更が元の行列に反映されます。

于 2013-01-21T03:04:55.440 に答える