【问题标题】:how multiply two dimensional array aka matrix [duplicate]如何乘以二维数组又名矩阵[重复]
【发布时间】:2016-11-23 19:56:41
【问题描述】:

我想知道如何将二维数组(矩阵)相乘并将它们显示为矩阵。

当前输出为

1 1 1
1 1 1
1 1 1

这不是正确的结果。

代码如下:

    static void Main(string[] args)
    {
        int[,] metrix1 = new int[3, 3] { { 2, 0, 2 }, { 0, 1, 2 }, { 1, 2, 1 } };
        int[,] metrix2 = new int[3, 3] { { 1, 1, 1 }, { 0, 1, 0 }, { 0, 0, 1 } };
        int[,] result = new int[3, 3];

        int m1 =0;
        int m2 =0;

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                m1 = metrix1[i, j];

            }
        }

        // metrix 2
            for (int y = 0; y < 3; y++)
            {
                for (int z = 0; z < 3; z++)
                {
                    m2 = metrix2[y, z];
                }
            }
            //m

                for (int a = 0; a < 3; a++)
                    {

                        for (int b = 0; b < 3; b++)
                        {
                        result[a, b] = m1 *m2;
                        Console.Write(result[a, b] );

                        }Console.WriteLine();
                }Console.ReadLine();

                }
            }
        }

【问题讨论】:

  • 只使用两个 for 循环
  • result[a, b] = m1 *m2; 将每个 result 元素设置为 m1 中的任何值乘以 m2 中的任何值。 m1m2 都是 1,因为这是两个数组中的最后一个元素。在//m 行查看您的代码,此时在您的代码中,您已经运行了两组双for 循环以完成,第一组的最后一次迭代将1 分配给m1,并且第二组的最后一次迭代将1 分配给m2,然后您将1*1 分配给result 的每个元素。 P.s.,提问时请使用正确的拼写和语法。

标签: c# arrays dimensional


【解决方案1】:

你的方法不正确。

for (int y = 0; y < 3; y++)
        {
            for (int z = 0; z < 3; z++)
            {
                m2 = metrix2[y, z];
            }
        }

此后,m2 将包含数组的右下角值 (matrix[2, 2])。您实际上是在为您的乘法一次又一次地乘以相同的值。您需要将所有这些放在一个 for 循环中。

另外,这不是进行矩阵乘法的正确方法。首先,您的代码仅适用于 3x3 矩阵;不仅可以有其他大小的矩阵(4x4、5x5 等),矩阵甚至不必是正方形就可以相乘(只要 1 的列数等于 1 的行数其他)。即使它们都是 3x3 矩阵,计算仍然是错误的。 Wikipedia 有一些很好的例子来说明正确的做法。

2 0 2   1 1 1   (2*1)+(0*0)+(2*0)  (2*1)+(0*1)+(2*0) ...  
0 1 2 x 0 1 0 = (0*1)+(1*0)+(2*0)  (0*1)(1*1)(2*0) ...
1 2 1   0 0 1   ..

【讨论】:

    猜你喜欢
    • 2014-02-28
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 2020-03-19
    • 2020-08-25
    • 2020-09-08
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多