int main() {
int M,N,T
scanf("%d %d %d",&M,&N,&T)
int mat[M][N]
printf("请输入原始矩阵:\n")
for(int i=0 i<M i++) {
for(int j=0 j<N j++) {
scanf("%d",&mat[i][j])
}
}
printf("原矩阵为:\n")
for(int i=0 i<M i++) {
for(int j=0 j<N j++) {
printf("%d ",mat[i][j])
}
printf("\n")
}
int temp = 0
if(T==0) {
printf("左右翻转后:\n")
for(int i=0 i<M i++) {
for(int j=0 j<N/2 j++) {
temp = mat[i][j]
mat[i][j] = mat[i][N-j-1]
mat[i][N-j-1] = temp
}
}
for(int i=0 i<M i++) {
for(int j=0 j<N j++) {
printf("%d ",mat[i][j])
}
printf("\n")
}
}
if(T==1) {
printf("上下翻转后:\n")
for(int i=0 i<M/2 i++) {
for(int j=0 j<N j++) {
temp = mat[i][j]
mat[i][j] = mat[N-i-1][j]
mat[N-i-1][j] = temp
}
}
for(int i=0 i<M i++) {
for(int j=0 j<N j++) {
printf("%d ",mat[i][j])
}
printf("\n")
}
}
return 0
}
matlab提供了左右、上下、以及旋转90度直接利用的函数,如下:
左右翻转:fliplr(x)
上下翻转:flipud(x)
旋转九十度:rot90(x)
扩展资料:
rot90(A,k)
功能:将矩阵(图片)旋转90度
参数:A——待 *** 作矩阵,k——旋转k*90度
详解:将矩阵A旋转k个90度,即旋转90,180,270。一维二维矩阵如只旋转90 度亦可用转置
符号;
适用于一维(数组)、二维、三维
注:旋转方向为逆时针;
flipud(A)
功能:将矩阵(图片)上下翻转
参数:A——待 *** 作矩阵
详解:矩阵A上下翻转,适用于一维(数组)、二维、三维;
fliplr(A)
功能:将矩阵(图片)左右翻转
参数:A——待 *** 作矩阵
详解:矩阵A左右翻转,适用于一维(数组)、二维、三维;
参考资料:百度百科-rot90
参考资料:百度百科-flipud
参考资料:百度百科-fliplr
在matlab中,实现矩阵行顺序颠倒的思想如下:
将矩阵A的倒数第 i 行保存于一个向量变量a中;
将矩阵A的第 i 行覆盖矩阵A的倒数第 i 行;
将向量变量a覆盖矩阵A的第 i 行,即可完成矩阵行顺序的颠倒。
具体实现程序如下:
function Y = fun(A)X = A % 备份原矩阵
[row, col] = size(X)
for i = 1 : floor(row/2) % 折半
a = X(row-i+1, :) % 保存倒数第 i 行数据
X(row-i+1, :) = X(i, :) % 覆盖倒数第 i 行数据
X(i, :) = a % 覆盖第 i 行数据
end
Y = X % 输出行顺序颠倒后的矩阵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)