C#实现矩阵转置的方法

本文实例讲述了C#实现矩阵转置的方法。分享给大家供大家参考。具体如下:

1.转置函数

/// <summary>
/// 求一个矩阵的转置矩阵
/// </summary>
/// <param name="matrix">矩阵</param>
/// <returns>转置矩阵</returns>
private static double[][] MatrixTranspose(double[][] matrix)
{
 //合法性检查
 if (!isMatrix(matrix))
 {
  throw new Exception("matrix 不是一个矩阵");
 }
 //矩阵中没有元素的情况
 if (matrix.Length == 0)
 {
  return new double[][] { };
 }
 double[][] result = new double[matrix[0].Length][];
 for (int i = 0; i < result.Length; i++)
 {
  result[i] = new double[matrix.Length];
 }
 //新矩阵生成规则: 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;
}

2.相关函数

/// <summary>
/// 判断一个二维数组是否为矩阵
/// </summary>
/// <param name="matrix">二维数组</param>
/// <returns>true:是矩阵 false:不是矩阵</returns>
private static bool isMatrix(double[][] matrix)
{
 //空矩阵是矩阵
 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;
}
/// <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++)
  {
   Console.Write(matrix[i][j] + "\t");
   //注意不能写为:Console.Write(matrix[i][j] + '\t');
  }
  Console.WriteLine();
 }
}

3.函数调用示例

1)Main函数代码

static void Main(string[] args)
{
 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.WriteLine();
 Console.ReadLine();
}

2)示例运行结果

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#实现矩阵乘法实例分析

    本文实例讲述了C#实现矩阵乘法的方法.分享给大家供大家参考.具体如下: static double[][] MatrixMultiplication(double[][] matrixOne, double[][] matrixTwo) { int aRows = matrixOne.Length; int aCols = matrixOne[0].Length; int bRows = matrixTwo.Length; int bCols = matrixTwo[0].Length; if

  • C#中矩阵运算方法实例分析

    本文实例讲述了C#中矩阵运算方法.分享给大家供大家参考.具体分析如下: 一.测试环境: 主机:XP 开发环境:VS2008 二.功能: 在C#中实现矩阵运算 三.源代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Sy

  • C#实现矩阵加法、取负、数乘、乘法的方法

    本文实例讲述了C#实现矩阵加法.取负.数乘.乘法的方法.分享给大家供大家参考.具体如下: 1.几个基本函数 1)判断一个二维数组是否为矩阵:如果每行的列数都相等则是矩阵,没有元素的二维数组是矩阵 /// <summary> /// 判断一个二维数组是否为矩阵 /// </summary> /// <param name="matrix">二维数组</param> /// <returns>true:是矩阵 false:不是矩阵

  • C#判断一个矩阵是否为对称矩阵及反称矩阵的方法

    本文实例讲述了C#判断一个矩阵是否为对称矩阵及反称矩阵的方法.分享给大家供大家参考.具体如下: 1.判断对称矩阵 对任意i和j,有a[i,j]=a[j,i] /// <summary> /// 检查一个矩阵是否为对称矩阵 /// </summary> /// <param name="matrix">矩阵</param> /// <returns>true:是对称矩阵 false:不是对称矩阵</returns>

  • C#实现将一个矩阵分解为对称矩阵与反称矩阵之和的方法

    本文实例讲述了C#实现将一个矩阵分解为对称矩阵与反称矩阵之和的方法.分享给大家供大家参考.具体如下: 1.理论依据 对任意n阶方阵A,有 A=(A+T(A))/2+(A-T(A))/2,其中T(A)是A的转置,(A+T(A))/2是一个对称矩阵,(A-T(A))/2是一个反称矩阵. 2.求出对称矩阵部分的函数 /// <summary> /// 把矩阵分解为对称矩阵与反称矩阵之和:对称矩阵 /// </summary> /// <param name="matrix

  • C#检测两个矩阵是否相等的方法

    本文实例讲述了C#检测两个矩阵是否相等的方法.分享给大家供大家参考.具体分析如下: 该方法并不检测矩阵中没一个单元格的值是否相等,因为其类型是double,只是检测单元格的值是否接近,double也不能判断相等. static bool areMatricesEqual(double[][] matrixOne,double[][] matrixTwo,double delta) { int aRows = matrixOne.Length; int bCols = matrixTwo[0].L

  • C#计算矩阵的秩实例分析

    本文实例讲述了C#计算矩阵的秩的方法.分享给大家供大家参考.具体如下: 1.代码思路 计算矩阵的秩,即把矩阵进行行初等变换,得出的行最简矩阵的非零行数.过程如下 1)将矩阵各行按第一个非零元素出现的位置升序排列(Operation1函数) 2)查看矩阵是否为行最简矩阵(isFinished函数),是则到第6步,不是则到第3步 3)如果有两行第一个非零元素出现的位置相同,则做消法变换,让下面行的第一个非零元素位置后移(Operation2函数) 4)将矩阵各行按第一个非零元素出现的位置升序排列(O

  • C#计算矩阵的逆矩阵方法实例分析

    本文实例讲述了C#计算矩阵的逆矩阵方法.分享给大家供大家参考.具体如下: 1.代码思路 1)对矩阵进行合法性检查:矩阵必须为方阵 2)计算矩阵行列式的值(Determinant函数) 3)只有满秩矩阵才有逆矩阵,因此如果行列式的值为0(在代码中以绝对值小于1E-6做判断),则终止函数,报出异常 4)求出伴随矩阵(AdjointMatrix函数) 5)逆矩阵各元素即其伴随矩阵各元素除以矩阵行列式的商 2.函数代码 (注:本段代码只实现了一个思路,可能并不是该问题的最优解) /// <summary

  • C#实现矩阵转置的方法

    本文实例讲述了C#实现矩阵转置的方法.分享给大家供大家参考.具体如下: 1.转置函数 /// <summary> /// 求一个矩阵的转置矩阵 /// </summary> /// <param name="matrix">矩阵</param> /// <returns>转置矩阵</returns> private static double[][] MatrixTranspose(double[][] matri

  • Python实现矩阵转置的方法分析

    本文实例讲述了Python实现矩阵转置的方法.分享给大家供大家参考,具体如下: 前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加.例如添加[3, 4]使原列表扩充为[[1, 3], [2, 4]],再添加[5, 6]扩充为[[1, 3, 5], [2, 4, 6]]等等. 其实不动脑筋的话,用个二重循环很容易写出来: def trans(m): a = [[] for i in m[0]] for i in m: f

  • python中返回矩阵的行列方法

    实例如下所示: # TODO 返回矩阵的行数和列数 def shape(M): return len(M),len(M[0]) 以上这篇python中返回矩阵的行列方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Python numpy 提取矩阵的某一行或某一列的实例 Python矩阵常见运算操作实例总结 Python表示矩阵的方法分析 Python获取二维矩阵每列最大值的方法 Python实现矩阵转置的方法分析 matlab中实现矩阵删

  • 对python 矩阵转置transpose的实例讲解

    在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path) arr_img = np.asarray(img, dtype='float64') arr_img = arr_img.transpose(2,0,1).reshape((image_vector_len, ))# 47行,55列,每个点有3个元素rgb.再把这些元素一字排开 transpose是什么意识呢?

  • Python 使用Numpy对矩阵进行转置的方法

    如下所示: matrix.py #!/usr/bin/python # -*- encoding:UTF-8-*- import pprint import numpy as np matrix = [[1,2],[3,4],[5,6]] print('列表:') pprint.pprint(matrix) matrix_2 = np.matrix(matrix) print('原矩阵:') pprint.pprint(matrix_2) matrix_transpose = np.transp

  • Python 矩阵转置的几种方法小结

    我就废话不多说了,直接上代码吧! #Python的matrix转置 matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] def printmatrix(m): for ele in m: for i in ele: print("%2d" %i,end = " ") print() #1.利用元祖的特性进行转置 def transformMatrix(m): #此处巧妙的先按照传递的元祖m的列数,生成了r的行数 r = [[] f

  • Python实现的矩阵转置与矩阵相乘运算示例

    本文实例讲述了Python实现的矩阵转置与矩阵相乘运算.分享给大家供大家参考,具体如下: 矩阵转置 方法一 :使用常规的思路 def transpose(M): # 初始化转置后的矩阵 result = [] # 获取转置前的行和列 row, col = shape(M) # 先对列进行循环 for i in range(col): # 外层循环的容器 item = [] # 在列循环的内部进行行的循环 for index in range(row): item.append(M[index][

  • Python:二维列表下标互换方式(矩阵转置)

    我就废话不多说了,直接上代码吧! #!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: 617349013@qq.com @software: PyCharm @file: 二维列表下标互换(矩阵转置).py @time: 2018/12/30 10:24 """ ''' 矩阵转置 将[[1,2,3],[4,5,6],[7,8,9]]

  • java实现二维数组转置的方法示例

    本文实例讲述了java实现二维数组转置的方法.分享给大家供大家参考,具体如下: 这里在文件中创建Test2.Exchange.Out三个类 在Exchange类中编写exchange()方法,在方法中创建两个数组arraryA.arraryB,arraryB[j][i]=arraryA[i][j]实现数组的转置. 在Out类中编写out()方法,在方法中用for循环遍历实现输出. 具体代码如下: package Tsets; import java.util.*; public class Te

  • python实现矩阵乘法的方法

    本文实例讲述了python实现矩阵乘法的方法.分享给大家供大家参考.具体实现方法如下: def matrixMul(A, B): res = [[0] * len(B[0]) for i in range(len(A))] for i in range(len(A)): for j in range(len(B[0])): for k in range(len(B)): res[i][j] += A[i][k] * B[k][j] return res def matrixMul2(A, B):

随机推荐