いかなる種類のループも使用せずに行列を転置する方法。nxn の場合、対角要素をベースおよびシフト要素として作成できます。しかし、nxm 行列の場合、この解決策は実現不可能だと思います。
とにかく、読み取りまたは保存するには、ループを使用する必要があります...??
ループのない解決策..??
いかなる種類のループも使用せずに行列を転置する方法。nxn の場合、対角要素をベースおよびシフト要素として作成できます。しかし、nxm 行列の場合、この解決策は実現不可能だと思います。
とにかく、読み取りまたは保存するには、ループを使用する必要があります...??
ループのない解決策..??
最初に行列の次元がわかっている場合は、ループは必要ありません。マトリックスの位置を交換して、マトリックス全体を転置できるからです。この最初の条件では、次元が mx n であってもループは必要ありません。
しかし、最初に行列の次元がわからない場合は、行列を反復して位置を読み取り、行列を転置する過程で別の位置にスワップするループが必要になります。
転置行列全体を格納するには、必ずループを使用する必要があります。マトリックスを保存するにはループを使用するため、マトリックスのメンバーをループして保存する必要があるため、これは実際には大したことではありません。
読んでいるだけなら、行列転置の定義を使用して、インデックスを変換するだけです。たとえば、C では次のようになります。
int getTransposedElement(int i,int j, int** originalMatrix) {
return originalMatrix[j,i];
}
クラスとポリモーフィズムのある言語を使用している場合は、これを自動的に行う新しいマトリックス クラスを作成できます。これには、元の行列のコピーを回避できるという追加の利点があります。これにより、メモリが節約され、転置行列への変更が元の行列に反映されます。