C++数据结构 矩阵的转置、镜像及旋转

这篇具有很好参考价值的文章主要介绍了C++数据结构 矩阵的转置、镜像及旋转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++数据结构 矩阵的转置、镜像及旋转

矩阵介绍

C++ 中的矩阵是一种二维数组,用于存储数值数据。矩阵可以用于存储图像数据,以及科学和工程计算中的数据。

常用于以下场景:

数学运算:矩阵乘法、行列式计算、特征值分解等。

图像处理:图像缩放、旋转、颜色变换等。

矩阵分析:因子分析、主成分分析、协方差分析等。

线性代数:矩阵求逆、行列式计算、特征值分解等。

在 C++ 中,可以使用内置数组和 STL 中的 vector 来实现矩阵的存储和操作。在这里简单介绍一下矩阵的转置、镜像以及旋转。

矩阵的转置

使用两个循环,一个从上到下遍历矩阵中的行,一个从左到右遍历矩阵中的列(只需要遍历到行数对应的列),并交换对角线上的元素。

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;
        }
    }
}

效果:

//转置前:
1 2 3 4
5 6 7 8
//转置后:
1 5
2 6
3 7
4 8

矩阵的镜像(左右镜像)

使用两个循环,一个从上到下遍历矩阵中的行,一个从左到右遍历矩阵中的列(只需要遍历半列)。在每个位置处,交换该位置与以中间行对称位置上的数字。

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

说明:上下镜像即是,一个从左到右遍历矩阵中的列,一个从上到下遍历矩阵中的行(只需要遍历半行)。在每个位置处,交换该位置与以中间列对称位置上的数字

矩阵的旋转(90度、180度、270度)

矩阵的旋转可以通过转置和镜像来实现:
情况一:顺时针转 90 度:先转置左右镜像
效果:

//旋转前:
1 2 3 4
5 6 7 8
//转置后:
1 5
2 6
3 7
4 8
//左右镜像后:(达到顺时针旋转90度)
5 1
6 2
7 3
8 4

情况二:顺时针转 180 度:先上下镜像,再**左右镜像(**先左右再上下也可)
效果:

//旋转前:
1 2 3 4
5 6 7 8
//上下镜像后:
5 6 7 8
1 2 3 4
//左右镜像后:(达到顺时针旋转180度)
8 7 6 5
4 3 2 1

情况三:顺时针转 270 度:先转置上下镜像
效果:文章来源地址https://www.toymoban.com/news/detail-668697.html

//旋转前:
1 2 3 4
5 6 7 8
//转置后:
1 5
2 6
3 7
4 8
//左右镜像后:(达到顺时针旋转270度)
4 8
3 7
2 6
1 5

到了这里,关于C++数据结构 矩阵的转置、镜像及旋转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 稀疏矩阵的运算-加、减、乘、转置(C-数据结构)

    以三元组的形式给出输入数据,选择对应的运算后给出对应输出结果(稀疏矩阵的运算器) 页面布局就不说了,这里大概说一下各个运算模块的实现 加减法 将三元组中对应的元素行列位置进行比较,将较为靠前的元素直接放进新的三元组存储结构,位置相同的元素通过对应符

    2024年02月11日
    浏览(39)
  • 【数据结构】数组(稀疏矩阵、特殊矩阵压缩、矩阵存储、稀疏矩阵的快速转置、十字链表)

    前几期期链接: 【数据结构】栈与队列的概念和基本操作代码实现 【数据结构】树与二叉树的概念与基本操作代码实现 k维数组的定义: k 维数组 D = { a j 1 , j 2 , . . . , j k } k维数组D={ a_{j_1, j_2, ..., j_k} } k 维数组 D = { a j 1 ​ , j 2 ​ , ... , j k ​ ​ } k 0 称为数组的维数,

    2024年04月09日
    浏览(140)
  • 西工大NOJ数据结构实验——2.1稀疏矩阵转置

    对稀疏矩阵进行转置操作,按照老师讲的,有两种办法。我用的是第一种最简单的,从上到下一行一行得走,虽然速度很慢,但是简单。 说实话这个题目很讨厌,我们定义的三元组里面mu表示的是行数,但是题目要求输入的m表示的是列数,这就很容易搞混了。 但是我们不用

    2023年04月25日
    浏览(122)
  • C语言数据结构课设:矩阵的运算(转置.求和.求差.矩阵相乘.求逆.数乘),文件读取矩阵

      #include stdio.h #include string.h #includestdlib.h #includemath.h // 定义一个结构体类型,表示一个矩阵 typedef struct matrix {     int nrow; // 矩阵的行数     int ncol; // 矩阵的列数     double data[10][10]; // 矩阵的数据,最大为 10 x 10 } matrix; // 定义一个函数,用于显示一个矩阵的内容  void dis

    2024年03月27日
    浏览(58)
  • 矩阵的转置

    题目: 给你一个二维整数数组 matrix , 返回 matrix 的 转置矩阵 。 示例 1:

    2024年02月12日
    浏览(41)
  • [数据结构(C语言版本)上机实验]稀疏矩阵的三元组顺序表压缩存储以及转置实现(含快速转置)

    实现效果: 1、编写程序任意 输入 一个稀疏矩阵,用 三元组顺序表 压缩存储 稀疏矩阵 。 2、对稀疏矩阵进行 转置 , 输出 转置后的矩阵。 对应《数据结构(C语言版)》 第5章 数组与广义表 实验: 1、 掌握下三角矩阵的输入、输出、压缩存储算法; 2、 理解稀疏矩阵的三元

    2024年02月03日
    浏览(46)
  • 【数据结构】数组和字符串(十):稀疏矩阵的链接存储:十字链表的矩阵操作(加法、乘法、转置)

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月08日
    浏览(61)
  • 矩阵的转置T和共轭转置H

    矩阵 G G G 的转置 G T G^T G T 和共轭转置 G H G^H G H 在数学中表示不同的操作: 转置 G T G^T G T : 转置是指将矩阵的行和列互换得到的新矩阵。 对于实数矩阵,转置是指将矩阵中的行变为相应的列。 对于复数矩阵,转置同样是将矩阵中的行变为相应的列。 在转置中,并不改变矩

    2024年02月03日
    浏览(56)
  • 数组:矩阵快速转置 矩阵相加 三元组顺序表/三元矩阵 随机生成稀疏矩阵 压缩矩阵【C语言,数据结构】(内含源代码)

    目录 题目: 题目分析: 概要设计: 二维矩阵数据结构: 三元数组三元顺序表顺序表结构: 详细设计: 三元矩阵相加: 三元矩阵快速转置: 调试分析: 用户手册: 测试结果:  源代码: 主程序:  头文件SparseMatrix.h:  头文件Triple.h: 总结: 稀疏矩阵A,B均采用 三元组

    2023年04月26日
    浏览(64)
  • pytorch中的矩阵的转置问题

    我在我的pytorch专栏发布了一期pytorch入门之tensor,介绍了torch.tensor()的一些创建方式和常用方法,其中就有矩阵的转置方法----tensor.t()、tensor.transpose()和tensor.permute()。我只是用少量语言和代码介绍了这三种方法的用法,但其中的转置原理没有说清。今天咱们就来絮叨絮叨~ 相信

    2023年04月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包