C#实现矩阵求转置

一、矩阵在代码中的表现形式可以由一个二维数组进行表示

        double[,]input = new double[9, 3];  //一个九行三列的二维数组
        for (int i = 0; i < 9; i++)//从表格中获取矩阵数据
            {
                input[i, 0] = double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString());
                input[i, 1] = double.Parse(dataGridView1.Rows[i].Cells[3].Value.ToString());
                input[i, 2] = 1;
            }

在这里插入图片描述


二、一个矩阵的转置相当于将矩阵中横纵坐标进行调换
例如:将[ 1 , 3 ]位置的的数据与[ 3 , 1 ]位置的数据进行调换,效果如下


在这里插入图片描述


三、因此可根据这种思路将代码中的数组(矩阵)进行转置

        public static double[,] MatrixT(double[,] input)
        {
            int x = input.GetLength(0);
            int y = input.GetLength(1);

            double[,] inputT = new double[y, x];

            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    inputT[j, i] = input[i, j];
                }
            }
            return inputT;
        
        }

结果:得到的 inputT[3,9] 数组(矩阵)即为 input[9,3] 数组(矩阵)的转置

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#中可以使用第三方库MathNet.Numerics来进行矩阵运算。这个库提供了丰富的线性代数算法,包括叉乘、除法和转置等。 以下是使用MathNet.Numerics进行矩阵运算的示例代码: ```csharp using MathNet.Numerics.LinearAlgebra; // 创建矩阵 Matrix<double> matrixA = Matrix<double>.Build.DenseOfArray(new double[,] { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }); Matrix<double> matrixB = Matrix<double>.Build.DenseOfArray(new double[,] { {9, 8, 7}, {6, 5, 4}, {3, 2, 1} }); // 矩阵乘法 Matrix<double> matrixC = matrixA * matrixB; // 矩阵除法 Matrix<double> matrixD = matrixA / matrixB; // 矩阵转置 Matrix<double> matrixE = matrixA.Transpose(); // 矩阵叉乘 Vector<double> vectorA = Vector<double>.Build.Dense(new double[] {1, 2, 3}); Vector<double> vectorB = Vector<double>.Build.Dense(new double[] {4, 5, 6}); Vector<double> vectorC = vectorA.CrossProduct(vectorB); ``` 以上代码中,我们使用了Matrix和Vector类来表示矩阵和向量,这些类提供了丰富的线性代数算法。在创建矩阵时,我们使用Build类提供的DenseOfArray方法来从数组中创建矩阵。在进行矩阵乘法、除法和转置等操作时,我们直接使用矩阵的运算符重载。在进行矩阵叉乘时,我们使用向量的CrossProduct方法来计算叉乘结果。 需要注意的是,MathNet.Numerics库中提供了多种矩阵和向量类型,如DenseMatrix、SparseMatrix、DenseVector、SparseVector等,不同类型的矩阵和向量适用于不同的场景。在实际使用中,需要根据具体情况选择合适的类型来进行矩阵运算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来超低端科技研究所

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值