C++での行列の転置関数の例


  1. 配列を使用した転置関数の例:
#include <iostream>
void transposeMatrix(int matrix[][3], int rows, int cols) {
    int transposedMatrix[cols][rows];
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            transposedMatrix[j][i] = matrix[i][j];
        }
    }
// 転置された行列の表示
    for (int i = 0; i < cols; i++) {
        for (int j = 0; j < rows; j++) {
            std::cout << transposedMatrix[i][j] << " ";
        }
        std::cout << std::endl;
    }
}
int main() {
    int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

    std::cout << "元の行列:" << std::endl;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    std::cout << "転置行列:" << std::endl;
    transposeMatrix(matrix, 3, 3);
    return 0;
}

この例では、transposeMatrix関数を定義して、2次元配列を引数として受け取ります。transposedMatrixという名前の新しい配列を作成し、要素を入れ替えて転置行列を計算します。最後に、転置された行列を表示します。

  1. ライブラリを使用した転置関数の例:

もちろん、C++のライブラリを使用することもできます。例えば、Eigenライブラリを使って行列の転置を行うことができます。

#include <iostream>
#include <Eigen/Dense>
int main() {
    Eigen::Matrix3f matrix;
    matrix << 1, 2, 3,
              4, 5, 6,
              7, 8, 9;
    std::cout << "元の行列:" << std::endl;
    std::cout << matrix << std::endl;
    Eigen::Matrix3f transposedMatrix = matrix.transpose();
    std::cout << "転置行列:" << std::endl;
    std::cout << transposedMatrix << std::endl;
    return 0;
}

この例では、Eigenライブラリを使用して3x3の行列を作成し、transpose関数を呼び出して転置行列を計算します。最後に、元の行列と転置行列を表示します。

以上が、C++で行列の転置を行う方法の例です。これらのコードを参考にして、自分のプログラムに適用してみてください。