C语言的矩阵翻转

C语言的矩阵翻转,第1张

#include <stdio.h>

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  % 输出行顺序颠倒后的矩阵


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11816588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存