- 配列を使用した転置関数の例:
#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
という名前の新しい配列を作成し、要素を入れ替えて転置行列を計算します。最後に、転置された行列を表示します。
- ライブラリを使用した転置関数の例:
もちろん、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++で行列の転置を行う方法の例です。これらのコードを参考にして、自分のプログラムに適用してみてください。