C#实现矩阵转置的方法

Oliver
Oliver
发布时间:2026-10-13| 4人浏览过
原创

本文提供C#二维数组矩阵转置的完整实现方案,包含合法性校验、核心转置逻辑及控制台输出演示。

C#矩阵转置的实现原理

矩阵转置的核心在于行列互换。对于一个 m x n 的矩阵,其转置矩阵为 n x m,即原矩阵中的元素 A[i, j] 在转置后变为 B[j, i]。在C#中使用锯齿数组(Array of Arrays,如 double[][])时,需要特别注意内存布局与索引逻辑的处理。

第1步:构建矩阵合法性检查函数

在进行转置前,必须确保输入的二维数组是严格的“矩形”结构(即每一行的长度相等)。这一步能防止后续访问越界异常。

/// <summary>
/// 判断一个二维数组是否为合法的矩阵
/// </summary>
/// <param name="matrix">二维数组</param>
/// <returns>true:是矩阵 false:不是矩阵</returns>
private static bool isMatrix(double[][] matrix)
{
 // 空矩阵或长度为0视为合法边界情况
 if (matrix.Length < 1) return true;
 
 // 获取首行长度作为标准
 int count = matrix[0].Length;
 
 // 遍历其余行,检查是否长度一致
 for (int i = 1; i < matrix.Length; i++)
 {
  if (matrix[i].Length != count)
  {
   return false;
  }
 }
 return true;
}

第2步:实现核心转置算法

此函数执行实际的转置操作。它首先进行合法性校验,然后创建一个新大小的矩阵,最后通过嵌套循环将 matrix[j][i] 赋值给 result[i][j]。

/// <summary>
/// 求一个矩阵的转置矩阵
/// </summary>
/// <param name="matrix">原始矩阵</param>
/// <returns>转置后的新矩阵</returns>
private static double[][] MatrixTranspose(double[][] matrix)
{
 // 1. 合法性检查
 if (!isMatrix(matrix))
 {
  throw new Exception("matrix 不是一个合法的矩形矩阵");
 }

 // 2. 处理空矩阵边界
 if (matrix.Length == 0)
 {
  return new double[][] { };
 }

 // 3. 创建目标矩阵:行列数与原矩阵相反
 // 假设原矩阵为 MxN,则结果矩阵为 NxM
 double[][] result = new double[matrix[0].Length][];
 for (int i = 0; i < result.Length; i++)
 {
  result[i] = new double[matrix.Length];
 }

 // 4. 执行转置赋值:b[i,j] = a[j,i]
 for (int i = 0; i < result.Length; i++)
 {
  for (int j = 0; j < result[0].Length; j++)
  {
   result[i][j] = matrix[j][i];
  }
 }
 return result;
}

第3步:完善打印辅助函数

为了直观查看效果,需要一个按行打印的函数。注意使用字符串拼接时,制表符应显式转换为字符串,避免字符编码歧义。

/// <summary>
/// 打印矩阵到控制台
/// </summary>
/// <param name="matrix">待打印矩阵</param>
private static void PrintMatrix(double[][] matrix)
{
 for (int i = 0; i < matrix.Length; i++)
 {
  for (int j = 0; j < matrix[i].Length; j++)
  {
   // 使用 + "\t" 确保制表符正确插入
   Console.Write(matrix[i][j] + "\t");
  }
  Console.WriteLine();
 }
}

第4步:完整调用示例与结果验证

在 Main 方法中定义测试数据,分别打印原矩阵与转置后的矩阵,以验证逻辑正确性。

static void Main(string[] args)
{
 // 定义一个 3行 x 4列 的矩阵
 double[][] matrix = new double[][] 
 {
  new double[] { 1, 2, 3, 4 },
  new double[] { 4, 5, 6, 7 },
  new double[] { 7, 8, 9, 10}
 };

 // 打印原矩阵
 PrintMatrix(matrix);
 Console.WriteLine("--- 分隔线 ---");
 
 // 调用转置函数并打印结果
 PrintMatrix(MatrixTranspose(matrix));
 
 Console.ReadLine();
}

从上图可知,原矩阵为 3×4 结构,转置后成功变为 4×3 结构,行列对应关系转换正确。

以上就是C#实现矩阵转置的详细内容,更多关于C#矩阵操作及算法优化的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。