matrix transposition
Főnév
matrix transposition (tsz. matrix transpositions)
A mátrix transzponálása egy olyan művelet, amely során a mátrix sorait és oszlopait felcseréljük. Például, ha van egy m x n méretű mátrixunk, akkor annak transzponáltja egy n x m méretű mátrix lesz, ahol az eredeti mátrix sorai az új mátrix oszlopaivá válnak, és az eredeti oszlopok pedig sorokká.
Példa a mátrix transzponálására 2D tömbök használatával C++-ban
A következő C++ program bemutatja, hogyan végezhetjük el a mátrix transzponálását két dimenziós (2D) tömbök használatával.
Mátrix transzponálása C++-ban:
#include <iostream>
using namespace std;
int main() {
// Eredeti mátrix: 2x3-as
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// Transzponált mátrix: 3x2-es
int transposed[3][2];
// A mátrix transzponálása
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
transposed[j][i] = matrix[i][j]; // Sorok és oszlopok felcserélése
}
}
// Az eredeti mátrix kiírása
cout << "Eredeti mátrix:" << endl;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// A transzponált mátrix kiírása
cout << "\nTranszponált mátrix:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
cout << transposed[i][j] << " ";
}
cout << endl;
}
return 0;
}
Program működése:
- Eredeti mátrix deklarálása: Az
int matrix[2][3]egy 2 sorból és 3 oszlopból álló mátrixot jelent. - Transzponált mátrix létrehozása: Az
int transposed[3][2]egy 3 sorból és 2 oszlopból álló mátrix, amelybe a transzponált értékeket fogjuk beírni. - Mátrix transzponálása:
- A külső
forciklus a sorokat iterálja (i), míg a belsőforciklus az oszlopokat (j). - A transzponálás során az
transposed[j][i] = matrix[i][j]kifejezés gondoskodik arról, hogy amatrixsorai aztransposedoszlopaiba kerüljenek, és fordítva.
- A külső
- Mátrix kiírása:
- Először az eredeti mátrixot írjuk ki, majd a transzponált mátrixot.
Kimenet:
Ha a fenti kódot futtatjuk, akkor az alábbi kimenetet kapjuk:
Eredeti mátrix: 1 2 3 4 5 6 Transzponált mátrix: 1 4 2 5 3 6
Magyarázat:
Az eredeti mátrix
2x3méretű:1 2 3 4 5 6
A transzponált mátrix
3x2méretű lesz, és a sorok és oszlopok felcserélődnek:1 4 2 5 3 6
Általánosítás:
Ha dinamikusan szeretnénk kezelni a mátrixokat, például változó számú sorral és oszloppal, akkor azt is megoldhatjuk. Ehhez dinamikus memóriafoglalást használhatunk, például new operátorral. Az alábbiakban bemutatok egy példát, ahol a mátrix méretét a felhasználó adja meg:
Dinamikus mátrix transzponálás:
#include <iostream>
using namespace std;
int main() {
int rows, cols;
// Felhasználói input
cout << "Adja meg a mátrix sorainak számát: ";
cin >> rows;
cout << "Adja meg a mátrix oszlopainak számát: ";
cin >> cols;
// Dinamikus memóriafoglalás az eredeti mátrix számára
int** matrix = new int*[rows];
for (int i = 0; i < rows; i++) {
matrix[i] = new int[cols];
}
// Felhasználói input az eredeti mátrix feltöltéséhez
cout << "Adja meg az eredeti mátrix elemeit:" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cin >> matrix[i][j];
}
}
// Dinamikus memóriafoglalás a transzponált mátrix számára
int** transposed = new int*[cols];
for (int i = 0; i < cols; i++) {
transposed[i] = new int[rows];
}
// Mátrix transzponálása
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transposed[j][i] = matrix[i][j];
}
}
// Eredeti mátrix kiírása
cout << "\nEredeti mátrix:" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// Transzponált mátrix kiírása
cout << "\nTranszponált mátrix:" << endl;
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
cout << transposed[i][j] << " ";
}
cout << endl;
}
// Dinamikus memória felszabadítása
for (int i = 0; i < rows; i++) {
delete[] matrix[i];
}
delete[] matrix;
for (int i = 0; i < cols; i++) {
delete[] transposed[i];
}
delete[] transposed;
return 0;
}
Ez a program dinamikusan kezeli a mátrixok méretét, lehetővé téve a felhasználó számára, hogy megadja a sorok és oszlopok számát, és ennek megfelelően elvégezze a transzponálást.
Összegzés:
A mátrix transzponálása egy alapvető lineáris algebrai művelet, amely egyszerűen elvégezhető 2D tömbök használatával C++-ban. Az alapvető lépések a sorok és oszlopok felcserélése a megfelelő indexeléssel, és a mátrix elemeinek kiírása a transzponálás után. A dinamikus memóriafoglalás segíthet, ha a mátrix mérete futás közben változik.
- matrix transposition - Szótár.net (en-hu)
- matrix transposition - Sztaki (en-hu)
- matrix transposition - Merriam–Webster
- matrix transposition - Cambridge
- matrix transposition - WordNet
- matrix transposition - Яндекс (en-ru)
- matrix transposition - Google (en-hu)
- matrix transposition - Wikidata
- matrix transposition - Wikipédia (angol)