首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中添加矩阵?

在C#中添加矩阵?
EN

Stack Overflow用户
提问于 2009-02-23 00:33:39
回答 2查看 8.5K关注 0票数 2

我正在尝试使用一些简单的for循环在C#中将两个矩阵相加。我将结果存储在数据网格视图中。但是,最后一个单元格似乎没有添加。我已经看了这段代码一段时间了,似乎不能理解它。我做错什么了吗?

代码语言:javascript
复制
    // Adds two matrices together using arrays.
    private void menuItemAdd_Click(object sender, EventArgs e)
    {
        // Create two 2-D arrays
        int[,] matrixOne = new int[dgvMatrixOne.RowCount, dgvMatrixOne.ColumnCount];
        int[,] matrixTwo = new int[dgvMatrixTwo.RowCount, dgvMatrixTwo.ColumnCount];

        // The rows of the total matrix match the rows of the first matrix.
        dgvMatrixTotal.RowCount = dgvMatrixOne.RowCount;

        // The columns of the total matrix match the columns of the first matrix.
        dgvMatrixTotal.ColumnCount = dgvMatrixOne.ColumnCount;

        // Fill matrix one with the data in the data grid matrix one.
        for (int i = 0; i < dgvMatrixOne.RowCount; i++)
        {
            for (int j = 0; j < dgvMatrixOne.ColumnCount; j++)
            {
                matrixOne[i, j] = Convert.ToInt32(dgvMatrixOne[i, j].Value);
            }
        }

        // Fill matrix two with the data in the data grid matrix two.
        for (int i = 0; i < dgvMatrixTwo.RowCount; i++)
        {
            for (int j = 0; j < dgvMatrixTwo.ColumnCount; j++)
            {
                matrixTwo[i, j] = Convert.ToInt32(dgvMatrixTwo[i, j].Value);
            }
        }

        // Set the total data grid to matrix one + matrix two.
        for (int i = 0; i < dgvMatrixOne.RowCount; i++)
        {
            for (int j = 0; j < dgvMatrixOne.ColumnCount; j++)
            {
                dgvMatrixTotal[i, j].Value = matrixOne[i, j] + matrixTwo[i, j];
            }
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2009-02-23 00:41:15

你确定你的矩阵有完全相同的大小吗,这两行很奇怪,因为你从一个矩阵中获取行数,而从另一个矩阵中获取列数。

代码语言:javascript
复制
dgvMatrixTotal.RowCount = dgvMatrixOne.RowCount;
dgvMatrixTotal.ColumnCount = dgvMatrixTwo.ColumnCount;

我认为您错误是因为MSDN声明Item属性(用于通过[]操作符进行类似数组的访问)是:

代码语言:javascript
复制
public DataGridViewCell this [
    int columnIndex,
    int rowIndex
] { get; set; }

但是你总是以颠倒的顺序使用它(行在列之前)。

票数 2
EN

Stack Overflow用户

发布于 2009-02-23 01:05:08

在像C#这样的语言中,您实际上不需要担心这些东西。有一些经过测试和测试的类库可以为你做这类事情,重要的是,它们得到了优化,利用了你的处理器的单指令多指令集指令等。如果语言有运算符重载,你只需要把你的矩阵声明为对象,然后用一个简单的result = mat_a + mat_b把它们加在一起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/576175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档