C++數(shù)據(jù)結(jié)構(gòu) 矩陣的轉(zhuǎn)置、鏡像及旋轉(zhuǎn)
矩陣介紹
C++ 中的矩陣是一種二維數(shù)組,用于存儲(chǔ)數(shù)值數(shù)據(jù)。矩陣可以用于存儲(chǔ)圖像數(shù)據(jù),以及科學(xué)和工程計(jì)算中的數(shù)據(jù)。
常用于以下場(chǎng)景:
數(shù)學(xué)運(yùn)算:矩陣乘法、行列式計(jì)算、特征值分解等。
圖像處理:圖像縮放、旋轉(zhuǎn)、顏色變換等。
矩陣分析:因子分析、主成分分析、協(xié)方差分析等。
線性代數(shù):矩陣求逆、行列式計(jì)算、特征值分解等。
在 C++ 中,可以使用內(nèi)置數(shù)組和 STL 中的 vector 來實(shí)現(xiàn)矩陣的存儲(chǔ)和操作。在這里簡(jiǎn)單介紹一下矩陣的轉(zhuǎn)置、鏡像以及旋轉(zhuǎn)。
矩陣的轉(zhuǎn)置
使用兩個(gè)循環(huán),一個(gè)從上到下遍歷矩陣中的行,一個(gè)從左到右遍歷矩陣中的列(只需要遍歷到行數(shù)對(duì)應(yīng)的列),并交換對(duì)角線上的元素。
void Transposed(vector<vector<int>>& matrix)
{
for(int i=0;i<matrix.size();++i){
for(int j=0;j<i;++j){
int temp=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=temp;
}
}
}
效果:
//轉(zhuǎn)置前:
1 2 3 4
5 6 7 8
//轉(zhuǎn)置后:
1 5
2 6
3 7
4 8
矩陣的鏡像(左右鏡像)
使用兩個(gè)循環(huán),一個(gè)從上到下遍歷矩陣中的行,一個(gè)從左到右遍歷矩陣中的列(只需要遍歷半列)。在每個(gè)位置處,交換該位置與以中間行對(duì)稱位置上的數(shù)字。
void mirror(vector<vector<int>>& matrix)
{
for(int i=0;i<matrix.size();++i){
for(int j=0;j<matrix[i].size()/2;++j){
int temp=matrix[i][j];
matrix[i][j]=matrix[i][matrix[i].size()/2-j-1];
matrixmatrix[i][matrix[i].size()/2-j-1]=temp;
}
}
}
效果:
//鏡像前:
1 2 3 4
5 6 7 8
//鏡像后:
4 3 2 1
8 7 6 5
說明:上下鏡像即是,一個(gè)從左到右遍歷矩陣中的列,一個(gè)從上到下遍歷矩陣中的行(只需要遍歷半行)。在每個(gè)位置處,交換該位置與以中間列對(duì)稱位置上的數(shù)字
矩陣的旋轉(zhuǎn)(90度、180度、270度)
矩陣的旋轉(zhuǎn)可以通過轉(zhuǎn)置和鏡像來實(shí)現(xiàn):
情況一:順時(shí)針轉(zhuǎn) 90 度:先轉(zhuǎn)置再左右鏡像
效果:
//旋轉(zhuǎn)前:
1 2 3 4
5 6 7 8
//轉(zhuǎn)置后:
1 5
2 6
3 7
4 8
//左右鏡像后:(達(dá)到順時(shí)針旋轉(zhuǎn)90度)
5 1
6 2
7 3
8 4
情況二:順時(shí)針轉(zhuǎn) 180 度:先上下鏡像,再**左右鏡像(**先左右再上下也可)
效果:文章來源:http://www.zghlxwxcb.cn/news/detail-668697.html
//旋轉(zhuǎn)前:
1 2 3 4
5 6 7 8
//上下鏡像后:
5 6 7 8
1 2 3 4
//左右鏡像后:(達(dá)到順時(shí)針旋轉(zhuǎn)180度)
8 7 6 5
4 3 2 1
情況三:順時(shí)針轉(zhuǎn) 270 度:先轉(zhuǎn)置再上下鏡像
效果:文章來源地址http://www.zghlxwxcb.cn/news/detail-668697.html
//旋轉(zhuǎn)前:
1 2 3 4
5 6 7 8
//轉(zhuǎn)置后:
1 5
2 6
3 7
4 8
//左右鏡像后:(達(dá)到順時(shí)針旋轉(zhuǎn)270度)
4 8
3 7
2 6
1 5
到了這里,關(guān)于C++數(shù)據(jù)結(jié)構(gòu) 矩陣的轉(zhuǎn)置、鏡像及旋轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!